【发布时间】:2016-12-14 20:06:56
【问题描述】:
我正在尝试连续播放多个动画,一个接一个。这些动画要么是简单的变换(将图像视图移动一定距离),要么是更复杂的帧动画。
在研究这个问题时,AnimatorSet 一开始似乎是一个很好的解决方案。它允许您制作要播放的动画队列,然后按特定顺序执行它们。
// defining an example animation
Animator anim = ObjectAnimator.ofFloat(v, "alpha", 0f)
.setDuration(100);
AnimatorSet set = new AnimatorSet();
// dictating the order in which the animations will be played
set.playSequentially(anim, skewAnim, wobbleAnim);
set.start();
问题在于,据我所知,您无法从 xml 文件中定义的动画中定义要放入 AnimatorSet 的 Animator 对象。
另外,AnimationSet(注意名字不同)只允许你同时播放多个动画,所以这个类不适用于我的目的。
有人知道在您的项目中从 xml 对象定义 Animator 对象的方法吗?或者,是否有另一种方法可以完全播放一系列动画?
更新:
AnimatorSet set = new AnimatorSet();
Animator anim1 = AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.sample);
anim1.setTarget(myView1);
Animator anim2 = AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.sample);
anim2.setTarget(myView2);
anim1.setDuration(3000);
anim2.setDuration(3000);
anim1.setInterpolator(new CycleInterpolator(5));
anim2.setInterpolator(new CycleInterpolator(5));
set.playSequentially(anim1,anim2);
set.start();
【问题讨论】: