Glide显示图片闪烁问题

1,132 阅读1分钟

原因:

实际更新图像时,现象上看会把之前的清掉然后再绘上新的,这个过程中闪动很明显。原因是同一个 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);