順番に繰り返したい 3 つの 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 に設定すると
public void setInterpolator (TimeInterpolator インターポレーター) API レベル 11 で追加
この AnimatorSet の現在のすべての子アニメーションの TimeInterpolator を設定します。
そこでリスナーを設定してAnimatorSetを再起動してループさせてみたのですが、数ミリ秒停止してしまい、AnimatorSetの再起動の影響が目立ちます。
a.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation)
{
animation.start();
}
});
ループするにはどうすればよいですか (ObjectAnimators の膨大なリストを作成するか、Thread と Handler を使用して独自のアニメーションを作成することを除く)。