android 显示系统相册里的多张图片(网格布局)
时间: 2023-06-27 12:05:11 浏览: 125
可以使用 RecyclerView 和 GridLayoutManager 来实现网格布局显示多张图片,以下是一个简单的实现示例:
1. 在布局文件中添加 RecyclerView:
```
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_images"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
2. 创建一个 Adapter 类来绑定数据和视图:
```
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
private List<String> mImageList;
public ImageAdapter(List<String> imageList) {
mImageList = imageList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_image, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String imagePath = mImageList.get(position);
// 加载图片到 ImageView
Glide.with(holder.itemView.getContext())
.load(imagePath)
.into(holder.ivImage);
}
@Override
public int getItemCount() {
return mImageList.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView ivImage;
ViewHolder(@NonNull View itemView) {
super(itemView);
ivImage = itemView.findViewById(R.id.iv_image);
}
}
}
```
3. 在 Activity 或 Fragment 中初始化 RecyclerView 和 Adapter,并设置 GridLayoutManager:
```
// 获取系统相册里的图片路径列表
List<String> imageList = getImageListFromGallery();
RecyclerView rvImages = findViewById(R.id.rv_images);
rvImages.setLayoutManager(new GridLayoutManager(this, 3)); // 每行显示 3 张图片
rvImages.setAdapter(new ImageAdapter(imageList));
```
其中,getImageListFromGallery() 方法可以通过 ContentResolver 查询系统相册里的图片,并返回一个图片路径的列表。
至此,就可以在 RecyclerView 中显示系统相册里的多张图片了。需要注意的是,使用 Glide 加载图片时,需要在 build.gradle 文件中添加以下依赖:
```
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
```