2

いくつかのpngをアニメーション化しようとしていますが、アニメーションをループします。これは私のコードです:

wave.setBackgroundResource(R.drawable.wave_animation);
                frameAnimation = (AnimationDrawable)wave.getBackground();
                frameAnimation.setCallback(wave);
                frameAnimation.setVisible(true, true);
                frameAnimation.start();

そしてここでpngを含むxml

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"  android:oneshot="true">
    <item android:drawable="@drawable/wave_01" android:duration="200" />
    <item android:drawable="@drawable/wave_02" android:duration="200" />
    <item android:drawable="@drawable/wave_03" android:duration="200" />
    <item android:drawable="@drawable/wave_04" android:duration="200" />
</animation-list>

android:oneshot=false も追加しましたが、機能しません。

4

3 に答える 3

2

android:oneshot="false"このように変更するだけです

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"  android:oneshot="false">
    <item android:drawable="@drawable/wave_01" android:duration="200" />
    <item android:drawable="@drawable/wave_02" android:duration="200" />
    <item android:drawable="@drawable/wave_03" android:duration="200" />
    <item android:drawable="@drawable/wave_04" android:duration="200" />
</animation-list>
于 2016-01-20T11:29:26.583 に答える
1

上記のコードが示しています

    android:oneshot="true"

これにより、アニメーションが一度だけ実行されます。

あなたは android:oneshot="false" を試したと言います。
これは、アニメーション リストを複数回実行するために不可欠です。だから元に戻す。

アニメーションの実行は、独自の設定に関係なく、プライマリ/フォアグラウンド タスクが完了すると終了する「バックグラウンド」タスクであることに注意してください。

他の何かが必要な場合は、別のアプローチを取る必要があるかもしれません。

于 2015-06-24T20:49:37.940 に答える
0

これは画像上でアニメーションを実行しています。アニメーションを開始する前に、アニメーションがまだ実行されていないことを確認する必要があります。アニメーションを開始する前にチェックを追加し、実行中の場合は停止してから開始します。

private void startAnimation(){

        imageView.setImageResource(R.drawable.img_animation);

        AnimationDrawable imgAnimation = (AnimationDrawable) imageView.getDrawable();

        if (imgAnimation .isRunning()) {
            imgAnimation .stop();
        }
        imgAnimation .start();

    }

img_animation.xml // 以下のコメントをチェック

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true" >

    <!-- 24 frame per sec | 1000ms/24 i.e. 41ms per image -->
    <item
        android:drawable="@drawable/ball01" android:duration="41"/>
    <item
        android:drawable="@drawable/ball02" android:duration="41"/>
   ..........so on ..........
    <item
        android:drawable="@drawable/ball24" android:duration="41"/>

     <!-- Reset to first when animation stops-->
    <item
        android:drawable="@drawable/ball01"
        android:duration="10"/>

</animation-list>
于 2015-06-24T19:49:34.490 に答える