我的应用程序中有一个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();
}
}
解决方案不起作用。