RecyclerView通過notifyItemChanged方法更新item數據避免閃爍


閃爍主要由於RecyclerView使用的默認的動畫導致的,所以解決的方法就是修改默認的動畫。

首先把默認的動畫(DefaultItemAnimator)代碼復制到自定義的MyItemAnimator類里面。
接着找到animateChangeImpl方法修改其中的兩行代碼。

// 去掉alpha(0)
oldViewAnim.alpha(0).setListener(new VpaListenerAdapter() {...}).start();
oldViewAnim.setListener(new VpaListenerAdapter() {...}).start();

// 去掉alpha(1)
newViewAnimation.translationX(0).translationY(0).setDuration(getChangeDuration()).
                    alpha(1).setListener(new VpaListenerAdapter() {...}).start();
newViewAnimation.translationX(0).translationY(0).setDuration(getChangeDuration()).
                    setListener(new VpaListenerAdapter() {...}).start();

最后使用修改后的動畫。

recyclerView.setItemAnimator(new MyItemAnimator());

 

 

原文鏈接http://stackoverflow.com/questions/31897469/override-animation-for-notifyitemchanged-in-recyclerview-adapter


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM