Glide设置圆角图片后设置ImageVIew的scanType="centerCrop"无效解决办法

Glide设置圆角图片后设置ImageVIew的scanType="centerCrop"无效解决办法,第1张

Glide3.0 :

出现原因:看centerCrop()方法的源码可知,也是需要调用transform()方法的.所以前后共用CenterCrop会覆盖掉GlideRoundImage的效果

解决办法:2个效果同时放在transform里面就可以解决问题了。

Glide4.0

使用了glide4.0.0 +后,.transform方法参数改变,不能添加new CenterCrop(Context context)方法,修改GlideRoundTransform 继承CenterCrop 不在继承BitmapTransformation 如下:

然后引用:

就可以正常显示了

原因,Glide图片加载是异步的,RecyclerView的Item复用机制会利用已绘制好的Item,因此会出现加载完成后,但Item的position已经改变了,Glide再加载到相应的position的item上面。解决方案是对比控件的Tag,如果用Glide加载则需要在res/value文件夹中新建一个ids.xml文件,设置一个Id,具体做法如下:a

```

if(!TextUtils.isEmpty(item.avatar)) {

ivAvatar.setTag(R.id.image_id, item.avatar)

if(ivAvatar.getTag(R.id.image_id) !=null&&TextUtils.equals(item.avatar, (String) ivAvatar.getTag(R.id.image_id))) {

GlideImgManager.loadCircleHead(mContext, item.avatar, ivAvatar)

}

}

```


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11857431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存