私は奇妙な行動に直面しました。で始めるAnimationDrawable
とstart()
、アニメーションが終了した後isRunning()
も、メソッドはtrueを返します。ループしない「ワンショット」アニメーションです。
コード例は次のとおりです。
public class MyActivity extends Activity {
private AnimationDrawable cartoon;
private ImageView iv;
private BitmapDrawable frame0, frame1;
private final int sleep=1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cartoon = new AnimationDrawable();
cartoon.setOneShot(true);
frame0 = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.gridx0));
frame1 = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.gridx1));
}
@Override
protected void onStart() {
super.onStart();
if(iv==null) iv = (ImageView) findViewById(R.id.imageView);
cartoon.addFrame(frame0, sleep);
cartoon.addFrame(frame1, sleep);
iv.setImageDrawable(cartoon);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(cartoon.isRunning()) Log.d("AnimationTest", "Animation already started");
else cartoon.start();
return true;
}
}
そしてここに出力があります:
02-22 14:18:42.187: DEBUG/AnimationTest(2043): Animation already started
02-22 14:18:52.093: DEBUG/AnimationTest(2043): Animation already started
02-22 14:18:52.166: DEBUG/AnimationTest(2043): Animation already started
...and so on.
したがって、アニメーションは初めて実行され、その後isRunning
永久にtrueに戻ります。
code.google.comに投稿された同様の問題も見つかりましたが、コメントなしでクローズされました
私の質問は:
- 本当のバグはありますか、それとも私は何かを誤解しましたか?
AnimationDrawable
いつ終了したかはどうすればわかりますか?