我的应用程序中有一个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();
}
}
解决方案无效。
答案 0 :(得分:0)
一般情况下,动画包很不错。我记得我有动画没有开始的同样的问题,我带来的解决方案是开始它不是在onCreate()
,而不是我以前做过但onWindowFocusChanged()
一旦设置了所有视图的东西。我本人并没有自己扩展AnimationDrawable,但它可能与你的情况相同。