美文网首页
Android关于ListView的Item动画的问题

Android关于ListView的Item动画的问题

作者: 就怕是个demo | 来源:发表于2015-11-16 19:46 被阅读3062次

    今天给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

    相关文章

      网友评论

          本文标题:Android关于ListView的Item动画的问题

          本文链接:https://www.haomeiwen.com/subject/fxwkhttx.html