如何重播一次性动画

时间:2011-09-01 12:13:52

标签: android android-animation

我想制作一个动画但能够按照我想要的次数播放它。现在它只是第一次播放。

.XML:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/p1_ch1" android:oneshot="true">
    <item 
      android:drawable="@drawable/p1_ch1_5" 
      android:duration="500"/>
    <item 
      android:drawable="@drawable/p1_ch1_4" 
      android:duration="1000"/>
    <item 
      android:drawable="@drawable/p1_ch1_5" 
      android:duration="500"/>
</animation-list>

的.java:

public void handler_p1_ch1_5 (View target){
      ImageView iv = (ImageView)findViewById(R.id.p1_ch1_5);
      AnimationDrawable aw = (AnimationDrawable)iv.getBackground();
      aw.start();
}

4 个答案:

答案 0 :(得分:15)

在aw.start()

之前调用aw.stop()

答案 1 :(得分:1)

使用此:

frameAnimation.setOneShot(true);

答案 2 :(得分:0)

更改

android:oneShot="true" to
android:oneShot="false"

答案 3 :(得分:0)

如果你想在上一次动画完成后重播一次性动画,你可以这样做

final AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable();
if (!animationDrawable.isRunning()) {

    int totalFrameDuration = 0;
    for (int i = 0; i < animationDrawable.getNumberOfFrames(); i++) {
        totalFrameDuration += animationDrawable.getDuration(i);
    }

    animationDrawable.start();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            animationDrawable.stop();
        }
    }, duration);
}