Android属性动画---Property Animation(五)

AnimatorSet类来编排多个动画

在很多场景中,一个动画的播放要依赖与另一个动画的开始或结束。Android系统让你把这些相互依赖的动画绑定到一个AnimatorSet对象中,以便能够指定它们是同时的、顺序的、或在指定的延时之后来播放。AnimatorSet对象也能够彼此嵌套。

以下示例代码来自Bouncing Balls示例,它按照以下方式播放Animator对象:

1.  播放bounceAnim

2.  同时播放squashAnim1squashAnim2stretchAnim1stetchAnim2

3.  播放bounceBackAnim

4.  播放fadeAnim

AnimatorSet bouncer = new AnimatorSet();

bouncer.play(bounceAnim).before(squashAnim1);

bouncer.play(squashAnim1).with(squashAnim2);

bouncer.play(squashAnim1).with(stretchAnim1);

bouncer.play(squashAnim1).with(stretchAnim2);

bouncer.play(bounceBackAnim).after(stretchAnim2);

ValueAnimator fadeAnim = ObjectAnimator.ofFloat(newBall, "alpha", 1f, 0f);

fadeAnim.setDuration(250);

AnimatorSet animatorSet = new AnimatorSet();

animatorSet.play(bouncer).before(fadeAnim);

animatorSet.start();

关于如何使用动画集的完整示例,请看APIDemo中的Bouncing Balls示例。

动画监听器

使用下列介绍的监听器能够监听动画播放期间的重要事件:

1.  Animator.AnimatorListener

onAnimationStart()---动画开始的时候被调用

onAnimationEnd()---动画结束的时候被调用,它不管动画是如何结束的。

onAnimationRepeate()---动画重复播放的时候被调用

onAnimationCancel()---动画被取消播放的时候被调用。

2.  ValueAnimator.AnimatorUpdateListener

onAnimationUpdate()---在动画的帧上调用这个方法。通过监听这个事件,使用在动画期间由ValueAnimator对象产生的计算值。要使用这个值,就要用getAnimateValue()方法查询传递到事件中的ValueAnimator对象,以便获得当前的动画值。如果使用ValueAnimator类,那么实现这个监听器是必须的。

根据属性或对象的动画效果,可能需要调用View对象上的invalidate()方法,用新的动画值来强制屏幕的指定区域进行重绘。例如,Drawable对象的颜色属性的动画效果,在对象重绘自己的时候,只会导致屏幕的更新。在View对象上的所有属性的设置器,如setAlpha()setTranslationX()等方法都会正确的让View对象失效,因此在调用这些方法设置新值的时候,你不需要让该View对象失效。

如果不实现Animator.AnimatorListener接口的所有方法,你能够继承AnimatorListenerAdapter类,来代替对Animator.AnimatorListener接口的实现。AnimatorListenerAdapter类对这些方法提供了空的实现,你可以选择性的重写这些方法。

例如,APIDemo中的Bouncing Balls示例就只创建了一个AnimatorListenerdapter类的onAnimationEnd()回调方法:

ValueAnimatorAnimator fadeAnim =ObjectAnimator.ofFloat(newBall,"alpha",1f,0f);
fadeAnim.setDuration(250);
fadeAnim.addListener(newAnimatorListenerAdapter(){
publicvoid onAnimationEnd(Animator animation){
    balls.remove(((ObjectAnimator)animation).getTarget());

}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值