原因:
实际更新图像时,现象上看会把之前的清掉然后再绘上新的,这个过程中闪动很明显。原因是同一个 ImageView 切换图片显示时会闪现一下 placeHolder,如果 placeHolder 为空则会闪现一下背景。从代码看逻辑是:
-
into方法会取消上一次加载,最终会调用到[Target.onLoadCleared]方法。如果是直接into(ImageView),则会把原来的图置空并设置placeHolder, 如果是继承[CustomViewTarget],则会接着调用到[CustomViewTarget.onResourceLoading]; -
[ImageViewTarget.onLoadStarted]时会把原来的图置空并设置placeHolder。
方案:
1、使用dontAnimate取消图片切换动画
2、使用placeholder将之前的图片作为占位
Glide.with(context)
.load(url)
.placeholder(image.getDrawable())
.dontAnimate()
.centerCrop()
.into(image);