自定义相册多张图片选择并可限制数量

下面给出实现效果图:扫描手机图库中的图片方法/** * 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 */ private void getImages() { if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { Toa
摘要由CSDN通过智能技术生成

下面给出实现效果图:

扫描手机图库中的图片方法

/**
	 * 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中
	 */
	private void getImages() {
		if (!Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED)) {
			Toast.makeText(this, "暂无外部存储", Toast.LENGTH_SHORT).show();
			return;
		}

		// 显示进度条
		mProgressDialog = ProgressDialog.show(this, null, "正在加载...");

		new Thread(new Runnable() {

			@Override
			public void run() {
				// 加载图片
				Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
				ContentResolver mContentResolver = ImageGalleryActivity.this
						.getContentResolver();

				// 只查询jpeg和png的图片
				Cursor mCursor = mContentResolver.query(mImageUri, null,
						MediaStore.Images.Media.MIME_TYPE + "=? or "
								+ MediaStore.Images.Media.MIME_TYPE + "=?",
						new String[] { "image/jpeg", "image/png" },
						MediaStore.Images.Media.DATE_MODIFIED);

				while (mCursor.moveToNext()) {
					// 获取图片的路径
					String path = mCursor.getString(mCursor
							.getColumnIndex(MediaStore.Images.Media.DATA));
					File file=new File(path);
					GridChildImageBean bean=new GridChildImageBean();
					bean.setImagePath(path);
					bean.setImageName(file.getName());
					bean.setImageSize(file.length()+"");
					// 获取该图片的父路径名
					String parentName = file.getParentFile()
							.getName();
					// 根据父路径名将图片放入到mGruopMap中
					if (!mGruopMap.containsKey(parentName)) {
						List<GridChildImageBean> chileList = new ArrayList<GridChildImageBean&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android设备上打开相册选择多张图片,可以使用以下步骤: 1. 创建一个活动(Activity)或片段(Fragment),用于显示相册选择图片的界面。 2. 在活动或片段的布局文件中添加一个按钮或图片视图,用于触发打开相册的操作。 3. 在活动或片段的Java代码中,使用Intent对象启动系统相册应用。可以使用以下代码段: ```java Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); startActivityForResult(intent, PICK_IMAGE_REQUEST_CODE); ``` 其中,PICK_IMAGE_REQUEST_CODE是一个用户自定义的整数,用于在后续的代码中识别返回的结果。 4. 在活动或片段的Java代码中,覆盖 onActivityResult() 方法,并根据 PICK_IMAGE_REQUEST_CODE 处理相册选择的结果: ```java @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { if (data.getClipData() != null) { // 多张图片选择的情况 int count = data.getClipData().getItemCount(); for (int i = 0; i < count; i++) { Uri imageUri = data.getClipData().getItemAt(i).getUri(); // 处理选择图片 // ... } } else if (data.getData() != null) { // 单张图片选择的情况 Uri imageUri = data.getData(); // 处理选择图片 // ... } } } ``` 在上述代码中,我们通过检查 data.getClipData() 是否为空来确定用户是选择多张图片还是单张图片多张图片时,可以使用 data.getClipData().getItemCount() 获取选择图片数量,并逐个处理每张图片。对于单张图片,直接使用 data.getData() 获取图片的 Uri。 以上就是使用 Android 打开相册选择多张图片的基本步骤。根据具体需求,还可以加入图片预览、剪裁等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值