绘制系列(十)-属性动画之—AniamtorSet(组合动画)
属性动画之—组合动画(AnimatorSet)
前面我们说过借助PropertyValuesHolder,也可以实现多个动画同时作用于同一控件,AnimatorSet为官方给出的组合实现。
首先明确的一点是,组合动画对ValueAniamtor和ObjectAnimator都适用,但是一般ObjectAniamtor组合动画最常用。直接给为我们提供了两个方法playSequentially和playTogether,playSequentially表示所有动画依次播放,playTogether表示所有动画一起开始。
AnimatorSet.Builder
比如我们有三个动画,需要先播放动画C,在同播放动画A、B,这playsequentially()和playTogether()就无法实现了。就需要借助AnimatorSet.Builder类实现了
生成Animator.Builder对象实例,是通果animatorSet.play(animtor)方法生成对象的,表示要播放那个动画。
再来看看Animator.Builder类其方法
//和前面动画一起执行
public Builder with(Animator anim)
//执行先执行这个动画,再执行前面动画
public Builder before(Animator anim)
//执行前面的动画后,才执行该动画
public Builder after(Animator anim)
//延迟n毫秒之后执行动画
public Builder after(long delay)
play()表示当前动画,before()、after()、with()都是以play()当前播放的那个动画为基准的
比如play(animA),表示当前正在播放animA,before(animB),表示在animA在animB前面播放,with(animC)表示animaA和animC同时播放,after(animD)表示animA在animD之后播放。因此播放顺序为:D——>A、C——>B
AnimatorSet监听器
public static interface AnimatorListener {
/**
* 当AnimatorSet开始时调用
*/
void onAnimationStart(Animator animation);
/**
* 当AnimatorSet结束时调用
*/
void onAnimationEnd(Animator animation);
/**
* 当AnimatorSet被取消时调用
*/
void onAnimationCancel(Animator animation);
/**
* 当AnimatorSet重复时调用,由于AnimatorSet没有设置repeat的函数,所以这个方法永远不会被调用
*/
void onAnimationRepeat(Animator animation);
}
这儿需要说明一点是,监听器监听的而是AniamtorSet本身的动作,而不是其内部每个动画的动作。只有当AnimatorSet状态飞改变时,才会被调用
最后在来看看AniamtorSet类中的其他几个方法
//设置单次动画时长
public AnimatorSet setDuration(long duration);
//设置加速器
public void setInterpolator(TimeInterpolator interpolator)
//设置ObjectAnimator动画目标控件,如果设置了,会覆盖单个动画中的目标控件
public void setTarget(Object target)
可能你会有这种疑问,AnimatorSet和其内部的动画设置插值器等有什么区别?
区别就是:在AnimatorSet中设置以后,会覆盖单个ObjectAnimator中的设置;即如果AnimatorSet中没有设置,那么就以ObjectAnimator中的设置为准。如果AnimatorSet中设置以后,ObjectAnimator中的设置就会无效。
比如内部每个单个动画设置了时长、插值器,而animatorSet也设置了时长没有设置插值器,animatorSet设置的时长会覆盖内部每个动画的时长,其时长全部变成animatorSet设置的时长,而内部动画还是按自己的插值器效果实现自己的动画。一旦animatorSet也设置了插值器,南无内部每个动画设置插值器就会无效,每个动画的插值器就变成了animatorSet设置的插值器了。
上一篇: JEECMS v7 版发布,国产 Java 开源 CMS 系统
下一篇: Java实现观察者设计模式
推荐阅读
-
Android动画之组合属性动画
-
Android动画系列之属性动画的基本使用教程
-
Android属性动画Property Animation系列三之LayoutTransition(布局容器动画)_html/css_WEB-ITnose
-
Android属性动画Property Animation系列一之ObjectAnimator_html/css_WEB-ITnose
-
css3动画属性系列之transform细讲scale缩放_html/css_WEB-ITnose
-
动画系列之属性动画
-
绘制系列(十)-属性动画之—AniamtorSet(组合动画)
-
Android动画之组合属性动画
-
Android属性动画Property Animation系列一之ValueAnimator_html/css_WEB-ITnose
-
Android属性动画Property Animation系列一之ValueAnimator_html/css_WEB-ITnose