Android关于ListView的Item动画的问题

2015-11-16  本文已影响3062人  就怕是个demo

今天给listview的item设置删除动画的时候出现了一个bug,如下:

4EDCA835-4EA2-4695-8238-4EF1F3F40555.png

如图中间出现了空白。
后面分析得出结果,因为将item移出窗口后,没有复位,导致复用失败(语文不好,暂时就这么理解吧!)。
解决方案,在移除动画结束后将item布局复位。

//删除数据源里的对应数据
mDatas.remove(positon);
//获取父布局
final LinearLayout parent = (LinearLayout)view.getParent().getParent();
//属性动画                
ObjectAnimator animator = ObjectAnimator.ofFloat(parent, "translationX", 0, -parent.getWidth()); 
animator.setDuration(300);                
animator.start();                
animator.addListener(new Animator.AnimatorListener() {                    
    @Override                    
    public void onAnimationStart(Animator animation) {                  

    }                    
    @Override                    
    public void onAnimationEnd(Animator animation) { 
            //更新adapter
            mAdapter.notifyDataSetChanged();
            //复原布局,解决Bug
            ObjectAnimator.ofFloat(parent, "translationX", -parent.getWidth(), 0).setDuration(0).start();                    
    }                    
    @Override                    
    public void onAnimationCancel(Animator animation) {                    

    }                    
    @Override                    
    public void onAnimationRepeat(Animator animation) {                    

    }                
});

最后声明这只是偏方,更好的方法请借鉴GitHub上的优秀代码。
https://github.com/wasabeef/recyclerview-animators

上一篇下一篇

猜你喜欢

热点阅读