JSON

Fresco小技巧之重复设置图片加载导致闪烁的问题

字号+ 作者:H5之家 来源:H5之家 2015-10-11 09:20 我要评论( )

问题在使用Fresco图片加载时,如果快速上下滑动会导致图片被反复加载,这时可以通过为控件设置TAG来解决问题。解决当图片下载完成时,会回调BaseControllerListe

问题

在使用Fresco图片加载时,如果快速上下滑动会导致图片被反复加载,这时可以通过为控件设置TAG来解决问题。

解决

当图片下载完成时,会回调 BaseControllerListener中的onFinalImageSet方法,在其中为控件设置TAG,TAG的value值一般为图片的URL地址。

<(String id, ImageInfo imageInfo, Animatable animatable) { super.onFinalImageSet(id, imageInfo, animatable); MySimpleDraweeView.this.setTag(R.id.uriPath, uriPathTag); } }

当然除了在这里设置TAG,还不能达到我们的目的,还需要在设置图片加载的地方检查控件的TAG值与当前要去加载的URL值,是否一致,一致就不执行加载语句。

(Uri uri) { uriPathTag = uri.toString(); // 识别图片类型 recognitionPictureType(uriPathTag); // 不重复加载图片 if (isNotEqualsUriPath(uriPathTag)) { setHierarchy(); setController(uri); } } /** * 判定Tag和Url是否相等,相等代表图片已经加载过,不需要从新加载 */ (String imgUrl) { if (TextUtils.isEmpty(imgUrl) || TextUtils.isEmpty(this.getTag(R.id.uriPath) + "")) { return false; } return !(this.getTag(R.id.uriPath) + "").equals(imgUrl); }

这样就解决了图片重复加载,导致闪烁的问题了。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 浅谈使用PHP开发微信支付的流程

    浅谈使用PHP开发微信支付的流程

    2016-02-13 15:00

  • 实用的javascript小技巧

    实用的javascript小技巧

    2016-01-25 19:05

  • ExtAspNet应用技巧(二十二) - Ext4JSLint之JSON文件创建树控件(2)

    ExtAspNet应用技巧(二十二) - Ext4JSLint之JSON文件创建树控件(2)

    2016-01-25 09:02

  • 生成JSON元数据对象的典型技巧

    生成JSON元数据对象的典型技巧

    2016-01-24 16:00

网友点评