要从图库中选择多个图片并在单个Android活动中显示它们,你需要执行以下步骤:
首先,确保你的应用有读取外部存储的权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
使用Intent启动图库,并设置选择多个文件的标志。
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGES_REQUEST);
在onActivityResult
方法中处理返回的图片URI。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGES_REQUEST && resultCode == RESULT_OK && data != null) {
if (data.getClipData() != null) {
int count = data.getClipData().getItemCount();
for (int i = 0; i < count; i++) {
Uri imageUri = data.getClipData().getItemAt(i).getUri();
imageUris.add(imageUri);
}
} else if (data.getData() != null) {
Uri imageUri = data.getData();
imageUris.add(imageUri);
}
displayImages();
}
}
使用RecyclerView和适配器来显示选中的图片。
private List<Uri> imageUris = new ArrayList<>();
private void displayImages() {
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
ImageAdapter adapter = new ImageAdapter(imageUris);
recyclerView.setAdapter(adapter);
}
class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
private List<Uri> imageUris;
ImageAdapter(List<Uri> imageUris) {
this.imageUris = imageUris;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
return new ImageViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
Glide.with(holder.itemView.getContext()).load(imageUris.get(position)).into(holder.imageView);
}
@Override
public int getItemCount() {
return imageUris.size();
}
static class ImageViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
ImageViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
创建RecyclerView的布局文件activity_main.xml
和每个图片项的布局文件item_image.xml
。
activity_main.xml
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_select_images"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Images"/>
<RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/btn_select_images"/>
</RelativeLayout>
item_image.xml
:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"/>
通过以上步骤,你可以在Android应用中实现从图库选择多个图片并在单个活动中显示它们的功能。
领取专属 10元无门槛券
手把手带您无忧上云