问题
在使用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); }这样就解决了图片重复加载,导致闪烁的问题了。