RecycleView学习1 item动画

版权声明:本文为博主原创文章,转载希望能注明出处,感谢。 https://blog.csdn.net/u010126792/article/details/83818901

RecycleView设置动画方式.setItemAnimator(),sdk提供了默认的动画DefaultItemAnimator,要实现自定义动画需要实现SimpleItemAnimator。
需要实现下列方法:

public class CustomItemAnimator extends SimpleItemAnimator {
    //Item移除回调
    @Override
    public boolean animateRemove(RecyclerView.ViewHolder holder) {
        return false;
    }

    //Item添加回调
    @Override
    public boolean animateAdd(RecyclerView.ViewHolder holder) {
        return false;
    }


    //用于控制添加,移动更新时,其它Item的动画执行
    @Override
    public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) {
        return false;
    }

    //Item更新回调
    @Override
    public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromLeft, int fromTop, int toLeft, int toTop) {
        return false;
    }

    //真正控制执行动画的地方,所有的动画都在这里执行
    @Override
    public void runPendingAnimations() {

    }

    //停止某个Item的动画
    @Override
    public void endAnimation(RecyclerView.ViewHolder item) {

    }

    //停止所有动画
    @Override
    public void endAnimations() {

    }

    @Override
    public boolean isRunning() {
        return false;
    }
}

animateRemove等中记录holder,runPendingAnimations中执行动画。
animateMove()比较特别,指执行某个Item的动画时(update item时是同一个ViewHolder也会调用该方法),其它Item的行为,例如删除一个item,它下面的item需要网上移动,此处可以获得ViewHolder从而获得View,进行动画执行。

猜你喜欢

转载自blog.csdn.net/u010126792/article/details/83818901