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

posted on 2015-11-09 15:26  刘豆  阅读(31476)  评论(0编辑  收藏  举报

导航