我制作了一个包含三个 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) 在 API 级别 11 中添加
设置此 AnimatorSet 的所有当前子动画的 TimeInterpolator。
所以我尝试通过设置监听器重新启动AnimatorSet来循环,但是它会停止几毫秒并且重新启动AnimatorSet的效果是显而易见的。
a.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation)
{
animation.start();
}
});
我可以做些什么来循环它(除了构建一个庞大的 ObjectAnimators 列表或使用 Thread 和 Handler 编写我自己的动画)?