View的Detach状态对动画的影响

当View被Detached时,动画效果会消失。在Banner控件中,滑动切换导致动画消失,这与View的添加和移除有关。通过分析`startAnimation`和`dispatchDetachedFromWindow`源码,发现动画执行依赖于View的状态,Detached状态下,动画无法正常执行。
摘要由CSDN通过智能技术生成

View的Detach状态对动画的影响

起因是在用内部是ViewPager2实现的banner控件时,每个View有浮动的动画效果,在滑动切换后,动画消失。我们都知道ViewPager2的内部是用RecyclerView来实现的,而RecyclerView复用和回收View时会将View添加和移除,第一想法是Detach对动画有影响,在实验过这个想法,开始分析

切入点

startAnimationdispatchDetachedFromWindow

源码分析

startAnimation

public void startAnimation(Animation animation) {
    animation.setStartTime(Animation.START_ON_FIRST_FRAME);
    setAnimation(animation);
    invalidateParentCaches();
    invalidate(true);
}

public void setAnimation(Animation animation) {
    mCurrentAnimation = animation;
    ...
}

可以看到只是简单给mCurrentAnimation进行了赋值,其他都是动画相关的设置,然后执行了invalidate,那么动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值