Android的图片选择器(Image Picker)本身并不支持批量操作。但是,您可以通过以下方法实现批量选择图片的功能:
使用第三方库:有一些第三方库可以帮助您实现批量选择图片的功能。例如,您可以使用 PhotoPicker 这个库。它允许用户从相册中选择多个图片和视频。
自定义实现:您也可以自己编写代码来实现批量选择图片的功能。以下是一个简单的示例:
private static final int REQUEST_CODE_PICK_IMAGES = 1;
private static final int REQUEST_CODE_PICK_VIDEO = 2;
private List<Uri> imageUris = new ArrayList<>();
private List<Uri> videoUris = new ArrayList<>();
private void pickImages() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, REQUEST_CODE_PICK_IMAGES);
}
private void pickVideos() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
intent.setType("video/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, REQUEST_CODE_PICK_VIDEO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_CODE_PICK_IMAGES) {
imageUris.addAll((ArrayList<Uri>) data.getParcelableArrayListExtra(Intent.EXTRA_STREAM));
} else if (requestCode == REQUEST_CODE_PICK_VIDEO) {
videoUris.addAll((ArrayList<Uri>) data.getParcelableArrayListExtra(Intent.EXTRA_STREAM));
}
}
}
在这个示例中,我们定义了两个方法 pickImages()
和 pickVideos()
分别用于选择图片和视频。我们使用 Intent.ACTION_PICK
和 MediaStore.Images.Media.EXTERNAL_CONTENT_URI
(对于图片)以及 MediaStore.Video.Media.EXTERNAL_CONTENT_URI
(对于视频)来启动相册选择器,并通过 Intent.EXTRA_ALLOW_MULTIPLE
参数允许用户选择多个文件。
在 onActivityResult()
方法中,我们将选择的图片和视频的 Uri 添加到相应的列表中。您可以根据这些 Uri 进行后续的批量操作,例如预览、删除等。