Animator
概览
这是一个为可以被启动、终结以及附带动画监听器的动画提供基本支持的类的父类。
内部类
- 接口Animator.AnimatorListener
该监听器用于接收动画发出通知。 - 接口Animator.AnimatorPauseListener
该监听器用于接收当动画暂停或者恢复时发出的通知。
构造方法
Animator()
AnimatorSet
概览
这个类用于将一个动画集合按特定的顺序播放。动画可以设置成同时播放、顺序播放或者在一定的延时后播放。
有两种方式可以向AnimatorSet添加动画:
- 调用playTogether()或者playSequentially()一次性地添加并播放动画。
- 使用play(Animator)与Builder类中的方法,逐个添加并播放动画。
另外,可以建立一个动画之间循环依赖的AnimatorSet.比如,有动画A1,A2和A3,A1在A2前启动,A2在A3前启动,A3则在A1千启动。
内部类Builder
该类是一个工具类,用于为AnimatorSet添加动画,同时为不同的动画间添加联系。该类的方法的目的是为了表达动画间的依赖关系时更加人性化。在满足需求的前提下,开发者也可以使用playTogether()和playSequentially()方法。但在一些情况下,使用Builder类更方便。
Builder对象不能直接建立,而是通过paly(Animator)。
比如,设置一个AnimatorSet将动画1和动画2同时播放,动画3在动画2结束后播放,动画4则在动画3结束后播放:
AnimatorSet s = new AnimatorSet();
s.play(anim1).with(anim2);
s.play(anim2).before(anim3);
s.play(anim4).after(anim3);
AnimatorSet代码示例
AnimatorSet set = new AnimatorSet();
set.playSequentially(downAnim, stretchAnim, upAnim);
set.start();
s.play(anim4).after(anim3);
ValueAnimator
概览
该类为播放动画提供了简单的时间引擎,该引擎可以计算动画时间并将其设置在目标对象上。
所有的动画可以使用单个时间脉冲。存在处理器(handler)中的时间脉冲可以确保属性在UI线程中改变。
默认情况下,ValueAnimator使用非线性时间的插值,该插值由类AccelerateDecelerateInterpolator实现,实现方法为setInterpolator(TimeInterpolator)。
Animators可以通过代码或者资源文件建立。下面是一个ValueAnimator的资源文件示例:
<animator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:repeatCount="1"
android:repeatMode="reverse"/>
ValueAnimator须配合监听器使用,并通过监听器的方法对目标对象进行更新。
网友评论