安卓动画(三)Recyclerview ItemAnimator(上)

安卓动画(三)Recyclerview ItemAnimator(下)

前面讲了补间动画、Transition动画,属性动画,这一篇讲一讲和Recyclerview相关的动画。
Recyclerview里面有一个类ItemAnimator专门用来管理每个item变化时所对应的动画,当item被删除、添加、位置发生变化时,相应的动画就会被调用,从而给用户更好的体验,这一篇就原理、流程做一个大概的介绍。

由于ItemAnimator的流程还是比较复杂的,因为和recyclerview的layout过程是有一定耦合的而且涉及到ViewHolder的复用,因此只能简单的讲一下ItemAnimator的封装过程。ItemAnimator这个类里面有这么几个重要的方法:

public abstract boolean animateAppearance(@NonNull ViewHolder viewHolder,
                @Nullable ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo);
public abstract boolean animateChange(@NonNull ViewHolder oldHolder,
                @NonNull ViewHolder newHolder,
                @NonNull ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo);
public abstract boolean animateDisappearance(@NonNull ViewHolder viewHolder,
                @NonNull ItemHolderInfo preLayoutInfo, @Nullable ItemHolderInfo postLayoutInfo);
public abstract boolean animateAppearance(@NonNull ViewHolder viewHolder,
                @Nullable ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo);

上面几个方法看名字和源码注释就可以确定分别和view的出现、消失、改变等状态对应,比如当一个item要被remove掉,那么就要对这个ViewHolder调用animateDisappearance方法。然后还有运行动画的方法

public abstract void runPendingAnimations();

这是一个抽象方法,需要实现,主要是触发动画的开始,由于ItemAnimator这个类比较抽象,安卓为我们封装了一个类SimpleItemAnimator继承自RecyclerView.ItemAnimator,而且还抛出了几个抽象方法,需要我们实现:

public abstract boolean animateAdd(RecyclerView.ViewHolder holder);
public abstract boolean animateRemove(RecyclerView.ViewHolder holder);
public abstract boolean animateChange(RecyclerView.ViewHolder oldHolder,
            RecyclerView.ViewHolder newHolder, int fromLeft, int fromTop, int toLe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值