我已经制作了一个包含三个 ObjectAnimator 的 AnimatorSet,我想依次重复。
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially">
<objectAnimator
android:propertyName="rotation"
android:duration="300"
android:valueFrom="0"
android:valueTo="5"
android:valueType="floatType"/>
<objectAnimator
android:propertyName="rotation"
android:duration="600"
android:valueFrom="5"
android:valueTo="-5"
android:valueType="floatType"/>
<objectAnimator
android:propertyName="rotation"
android:duration="300"
android:valueFrom="-5"
android:valueTo="0"
android:valueType="floatType"/>
</set>
但是如果我将 CycleInterpolator 设置为 AnimatorSet,因为 Animators 将顺序启动
public void setInterpolator (TimeInterpolator interpolator) Added in API level 11
Sets the TimeInterpolator for all current child animations of this AnimatorSet.
所以我尝试通过设置监听器重新启动 AnimatorSet 来循环,但是它停止了几毫秒并且重新启动 AnimatorSet 的效果很明显。
a.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation)
{
animation.start();
}
});
我能做些什么来循环它(除了构建一个庞大的 ObjectAnimator 列表或使用 Thread 和 Handler 编写我自己的动画)?
最佳答案
也迫切需要这个功能,结果有人已经找到了解决方案。
http://www.jefflinwood.com/2013/04/repeating-android-animations-with-animatorset/
所有版权归原作者所有。
mAnimationSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mAnimationSet.start();
}
});
mAnimationSet.start();
关于android - 循环动画集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492523/