閃爍主要由於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());