android listview 上拉图片闪烁,android listview使用glide异步加载图片错位,闪烁问题...

博客介绍了如何通过设置Tag避免Glide加载图片时产生的闪烁现象,并修复了第一张图片显示不正确的问题。通过比较图片URL与控件Tag,确保在图片加载前后的一致性,从而实现流畅的图片展示。解决方案包括在set和getTag时使用特定的标识符R.id.imageloader_uri,以及在onResourceReady中判断并设置图片。
摘要由CSDN通过智能技术生成

参考网上方法:https://www.jianshu.com/p/f5593b87ee07

// 获取图像控件的Tag

String tag = (String) holder.imgView.getTag();

// 如果不一样,则设置为默认图片

if (!TextUtils.equals(mDataList.get(position).getUrl(), tag)) {

holder.imgView.setImageResource(R.drawable.ic_launcher);

}

// 使用Glide展示图像

Glide.with(DemoActivity.this)

.load(mDataList.get(position).getUrl())

.into(new SimpleTarget() {

@Override

public void onResourceReady(GlideDrawable resource,

GlideAnimation super GlideDrawable> glideAnimation) {

holder.imgView.setTag(mDataList.get(position).getUrl());

holder.imgView.setImageDrawable(resource);

}

});

整体不在闪烁,但是只有第一张图片是显示不正确的。后来又在这个基础上修改如下:

// 使用Glide展示图像

holder.imgView.setTag(R.id.imageloader_uri,mDataList.get(position).getUrl());

Glide.with(DemoActivity.this)

.load(mDataList.get(position).getUrl())

.into(new SimpleTarget() {

@Override

public void onResourceReady(GlideDrawable resource,

GlideAnimation super GlideDrawable> glideAnimation) {

// 获取图像控件的Tag

String tag = (String) holder.imgView.getTag(R.id.imageloader_uri);

// 如果一样,显示图片

if (TextUtils.equals(mDataList.get(position).getUrl(), tag)) {

holder.imgView.setImageDrawable(resource);

}

}

});

注意:

set和getTag的时候多设置了一个参数,R.id.imageloader_uri;

这里的R.id.imageloader_uri是values下新建的ids.xml:

问题解决了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值