使用glide的override()填充整个ImageView

glide默认是加载图片的原始比例大小,如果需要填充整个ImageView需要对图片进行裁剪

1.gradle中导入

implementation 'com.github.bumptech.glide:glide:4.11.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

2.使用

Glide.with(context).load(file.toUri())
                .override(Constant.PICTURE_WIDTH, Constant.PICTURE_HEIGHT).centerCrop()
                .into(holder.sdvPicture)

注意 :
override中参数的宽高,并不是imageView布局xml的宽高,可以使用代码获取 View.getWidth()。

你可以通过以下步骤实现RecyclerView分类显示文件夹下面的图片: 1. 创建一个包含日期文件夹和图片的数据模型类。 2. 在RecyclerView的Adapter中,重写getItemViewType()函数,根据数据模型类中的日期文件夹类型返回不同的ViewHolder类型。 3. 创建不同的ViewHolder类,用于显示不同的布局,例如日期文件夹所在的ViewHolder和图片所在的ViewHolder。 4. 在RecyclerView的Adapter中,重写onCreateViewHolder()函数,根据ViewHolder类型创建不同的ViewHolder。 5. 在RecyclerView的Adapter中,重写onBindViewHolder()函数,根据ViewHolder类型绑定对应的数据。 举个例子,你的数据模型类可以类似于这样: ```java public class FolderModel { private String folderName; private List<String> imagePaths; private boolean isDateFolder; public FolderModel(String folderName, List<String> imagePaths, boolean isDateFolder) { this.folderName = folderName; this.imagePaths = imagePaths; this.isDateFolder = isDateFolder; } // getters and setters } ``` 然后你可以在Adapter中这样实现: ```java public class FolderAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int VIEW_TYPE_DATE_FOLDER = 1; private static final int VIEW_TYPE_IMAGE = 2; private List<FolderModel> folderList; public FolderAdapter(List<FolderModel> folderList) { this.folderList = folderList; } @Override public int getItemViewType(int position) { if (folderList.get(position).isDateFolder()) { return VIEW_TYPE_DATE_FOLDER; } else { return VIEW_TYPE_IMAGE; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == VIEW_TYPE_DATE_FOLDER) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.date_folder_layout, parent, false); return new DateFolderViewHolder(view); } else { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_layout, parent, false); return new ImageViewHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof DateFolderViewHolder) { // 绑定日期文件夹ViewHolder的数据 DateFolderViewHolder dateFolderViewHolder = (DateFolderViewHolder) holder; dateFolderViewHolder.dateFolderNameTextView.setText(folderList.get(position).getFolderName()); } else { // 绑定图片ViewHolder的数据 ImageViewHolder imageViewHolder = (ImageViewHolder) holder; Glide.with(imageViewHolder.imageView.getContext()) .load(folderList.get(position).getImagePaths().get(0)) .into(imageViewHolder.imageView); } } @Override public int getItemCount() { return folderList.size(); } // 日期文件夹ViewHolder private static class DateFolderViewHolder extends RecyclerView.ViewHolder { TextView dateFolderNameTextView; DateFolderViewHolder(View itemView) { super(itemView); dateFolderNameTextView = itemView.findViewById(R.id.date_folder_name_text_view); } } // 图片ViewHolder private static class ImageViewHolder extends RecyclerView.ViewHolder { ImageView imageView; ImageViewHolder(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.image_view); } } } ``` 这样,你就可以通过设置数据模型类的isDateFolder属性来控制RecyclerView的分类显示了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值