android中animator及其监听器在cancel及end时的响应问题

1、AnimatorSet中存在多个animator,并且set及animator均添加了监听器的时候:

在start的时候会先分别执行各个animator的监听器的start方法,然后调用set自己的监听器的start方法。

在调用AnimatorSet的cancel()方法的时候,会首先调用set自己的cancel方法,然后循环对每个animator调用cancel及end方法,最后才调用set自己的end方法。

如下,alphaAnim与scaleAnim放到animSet中同时执行,三者均注册了监听器,启动animSet并且在执行中途执行cancel方法,调用如下:

alphaAnim start

scaleAnim start

animSet start

animSet cancel

alphaAnim cancel

alphaAnim end

scaleAnim cancel

scaleAnim end

animSet end


在animSet执行过程中调用animSet的end方法,调用顺序如下:

alphaAnim start

scaleAnim start

animSet start

alphaAnim end

scaleAnim end

animSet end


2、改为采用ScaleAnimation、AlphaAnimation、AnimationSet等方式来实现时,调用animSet的cancel方法,流程如下:

scaleAnim start

alphaAnim start

animSet start

animSet end

animSet end

scaleAnim end

alphaAnim end

animSet end


采用animationSet的时候执行流程有点诡异,set的end方法竟然调用了三次,不可理解。。看了下代码什么都没做,就是绑定了几个监听器,理论上没什么问题的啊。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值