3

100% から 0% にスケーリングし、不透明から透明 ( SET 1 ) にフェードしながら画像を回転させ、アニメーションを反転 ( SET 2 ) するImageViewのアニメーションを作成したいと思います。2 つのアニメーション セットは 1 つずつ取得すると機能しますが、それらを一緒にすると何も見えません。アニメーション セット 2 の開始値がすぐに適用されるためです。その子の startOffset がアニメーション セットの後に開始するように設定されていても1が完成しました。開始前にアニメーション セット 2 の開始値を適用しないように、 fadeAfterfadeBeforeを使用する必要があることを理解したと思いますが、うまくいきませんでした。私もfadeAfterを試してみましたSET 1でtrueに設定し、SET 2を削除して、それが機能するかどうかを確認します。つまり、SET 1の変換が終了後も持続するかどうかを確認しますが、再び機能しませんでした..だから、私が望む結果を生み出すことは可能ですか?次のアニメーション。おそらく、fadeAfterfadeBefore、およびfillEnabled属性を使用していますか? ImageViewビューで動作する必要がありますか?

アニメーション XML

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <!-- SET 1 -->
    <set
        android:interpolator="@android:anim/decelerate_interpolator"
        android:shareInterpolator="true" >
        <alpha android:fromAlpha="1"
            android:toAlpha="0"
            android:duration="1000"
            android:startOffset="500"/>
        <rotate
            android:duration="1000"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="500"
            android:toDegrees="720" />

        <scale
            android:duration="1000"
            android:fromXScale="100%"
            android:fromYScale="100%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="500"
            android:toXScale="0%"
            android:toYScale="0%" />
    </set>

    <!-- SET 2 -->
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:shareInterpolator="true">
         <alpha android:fromAlpha="0"
            android:toAlpha="1"
            android:duration="1000"
            android:startOffset="1500"/>
        <rotate
            android:duration="1000"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="720"
        android:startOffset="1500" />

        <scale
            android:duration="1000"
            android:fromXScale="0%"
            android:fromYScale="0%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="100%"
            android:toYScale="100%"
        android:startOffset="1500" />
    </set>
</set>

Java コードでのアニメーションの開始

ImageView iv = (ImageView) findViewById(R.id.image_view);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.test_animation);
iv.startAnimation(animation);

アニメーションリピートでテスト

SET 2 を削除してstartAnimationの前に次のコードを追加しようとしましたが、アニメーションは逆の順序で繰り返されません (RESTART と X の繰り返しサイクルも指定できますが、機能しません)。アイデアや提案はありますか?!

animation.setRepeatCount(1);
animation.setRepeatMode(Animation.REVERSE);
4

0 に答える 0