使用Glide重新加载图片时会闪烁,RecyclerView等控件

  • Post author:
  • Post category:其他


最近开发使用Glide加载图片到RecyclerView的item中的ImageView,发现重新刷新时每个ImageView都会闪烁一下

在网上找了很多解决方案:

1.更改RecyclerView中的 DefaultItemAnimator 类中的 animateChangeImpl() 方法,去掉透明度变化

在这里插入图片描述

然后再将更改好的类设置给RecyclerView

在这里插入图片描述

发现没什么用

2.更改RecyclerView的动画时间为0

在这里插入图片描述

首先说明上面两种方式都是更改RecyclerView的动画,这个动画是针对整个item的,对图片单独加载没啥用,至于别人为什么可以生效,咱才疏学浅,搞不懂

3.更改Glide的加载,把跳过内存缓存的选项去掉,或设为false,以及加上不需要动画

在这里插入图片描述

发现也没什么用,暂时没弄懂为啥,毕竟这个dontAnimate()的源码我还没看,不知道原理和干啥用的

Glide.with(context)
                    .load(drawable)
                    .apply(RequestOptions.bitmapTransform(new RoundedCorners((int) context.getResources().getDimension(R.dimen.dp_10))))//圆角半径
                    .skipMemoryCache(true)
                    .dontAnimate()
                    .into(new SimpleTarget<Drawable>() {
                        @Override
                        public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                            holder.item_add_image_aiv.setImageDrawable(resource);
                        }
                    });

大致意思就是把设置图片的这个动作自己做,不交给Glide,就解决了闪烁问题,原因可能是Glide在设置图片上加了什么动画或者其他操作吧