最近遇到使用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);