我想制作一个动画但能够按照我想要的次数播放它。现在它只是第一次播放。
.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();
}
答案 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);
}