天天看點

RecyclerView 重新整理時圖檔會閃一下

最近遇到使用RecyclerView,Glide加載圖檔,當點選圖檔進行重新整理,不管是局部重新整理還是全部重新整理的時候,都會使用glide重新加載圖檔,這時候如果glide加載圖檔的時候沒設定好就會出現重新整理的時候閃爍的問題,當然這是我出現的問題。

網上很多基本都是說recyclerview重新整理閃爍是因為預設動畫導緻的mRecyclerView.setItemAnimator(new DefaultItemAnimator()),通過自定義動畫修改代碼

将DefaultItemAnimator類裡的代碼全部copy到自己寫的動畫類中,然後做一些修改。

首先找到private void animateChangeImpl(final ChangeInfo changeInfo) {}方法。

找到方法裡這兩句代碼:

替換成:

也就是說分别去掉上述代碼中的alpha(0)和alpha(1),然後儲存。這個時候基本就打工告成了。最後在自己的RecyclerView中進行如下調用mRecyclerView.setItemAnimator(new NoAlphaItemAnimator());,再跑起來,bug完美解決。

然而我這樣做了,并沒有什麼卵用

還有一種直接方法,setSupportsChangeAnimations(false)直接取消動畫

都試過并沒有解決重新整理閃爍的問題。後來發現原來是glide設定了跳過記憶體緩存skipMemoryCache(true)導緻的。

設定成false

Glide
                .with(context)
                .load("imagePath")
                .skipMemoryCache(false)
                .thumbnail(0.5f)
                .fitCenter()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .dontAnimate()
                .into(holder.image);

           

繼續閱讀