AnimatorSet

来源:互联网 发布:邓肯季后赛数据 编辑:程序博客网 时间:2024/06/04 19:49

在前面的文章中,我曾经讲过多个动画一起执行的方法。但是,对于一些自定义View中所带的动画来说1,那个太过简单,只能实现多个动画同时执行。而一些设计者会要求不同时间段执行动画来收获绚丽的复合动画。
那么,这里就要用到AnimatorSet这个类了。首先,我们看看这个类的具体用法:

ObjectAnimator a1 = ObjectAnimator.ofFloat(v,"translationX",0f,200f); ObjectAnimator a2 = ObjectAnimator.ofFloat(v,"translationY",0f,200f); ObjectAnimator a3 = ObjectAnimator.ofFloat(v,"rotation",0f,360f); //定义了三个动画AnimatorSet set = new AnimatorSet();                set.setDuration(1000);//                set.playTogether(a1,a2,a3);//同时执行动画//                set.setStartDelay(300);//延迟执行动画//                set.playSequentially(a1,a2,a3);//顺序执行动画                set.play(a1).with(a2);//a1、a2同时执行动画                set.play(a3).after(a2);//a3在a2的后面                //即a1、a2同时执行,a3最后执行                set.start();

如上实例展示,我们可以很清晰地理解AnimatorSet的使用方法。
但是,在使用AnimatorSet时也需要注意一些地方:
animatorSet.play().with();也是支持链式编程的.但是animatorSet.paly(anim1).with(anim3).before(anim3).before(anim5);这样是不行的,系统不会根据你写的这一长串代码来决定动画的先后顺序。(其中链式编程就是在一行代码中连续调用一系列方法,但是这里如果连续调用一系列方法的话,系统无法判断动画执行的先后顺序,所以在使用AnimatorSet添加动画时要尽量避免这一行代码太过赘余,一般一次添加两个动画为好)。

原创粉丝点击