8

順番に繰り返したい 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 を使用して独自のアニメーションを作成することを除く)。

4

4 に答える 4

5

この特定のケースの回避策は、最初のアイテムが半分回転し、2 番目のアイテムが回転し続ける 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="150"
        android:valueFrom="0"
        android:valueTo="-5"
        android:valueType="floatType"/>

    <objectAnimator
        android:propertyName="rotation"
        android:duration="300"
        android:valueFrom="-5"
        android:valueTo="5"
        android:repeatMode="reverse"
        android:repeatCount="infinite"
        android:valueType="floatType"/>

</set>
于 2013-07-05T16:05:57.127 に答える
-1

AnimationSet に繰り返しモードを設定する必要があります。以下を参照してください。

http://developer.android.com/reference/android/view/animation/Animation.html#attr_android:repeatMode

于 2013-07-05T15:45:59.683 に答える
-2

繰り返すように頼むだけです:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:ordering="sequentially"
   android:repeatMode="reverse"
   android:repeatCount="infinite">

=)

count は、定義された数にすることもできます。

于 2013-07-05T15:45:22.973 に答える