Drawable
画面上を移動しているアプリケーションにオブジェクトがあります。
public class MyDrawable extends Drawable {
@Override
public void draw(Canvas canvas) {
// ...
}
// ...
}
これまでは問題なく動作していましたが、これをアニメーション化する必要がありますDrawable
。ドキュメントをチェックアウトしたところ、私にとって最適なオプションは を使用しているようですAnimationDrawable
。
私はこのようなことをしました:
public void addAnimation() {
animation = new AnimationDrawable();
animation.addFrame(resources.getDrawable(R.drawable.anim_0), 100);
animation.addFrame(resources.getDrawable(R.drawable.anim_1), 100);
animation.addFrame(resources.getDrawable(R.drawable.anim_2), 100);
animation.addFrame(resources.getDrawable(R.drawable.anim_3), 100);
animation.setOneShot(false);
refreshAnimationBounds();
animation.start();
}
@Override
public void draw(Canvas canvas) {
refreshAnimationBounds();
animation.draw(canvas);
}
元の画像Drawable
は意図したとおりに動いていますが、最初のフレームしか表示されません。何が問題なのですか?
refreshAnimationBounds();
Drawable
オブジェクトの境界をリフレッシュするだけです(再配置します)。
編集:
共通点:
public void onWindowFocusChanged(boolean hasFocus) {
if (hasFocus) {
animation.start();
} else {
animation.stop();
}
}
解決策が機能していません。