我正在做一个游戏,需要在surfaceview上画画
帆布。我正在使用SurfaceHolder获取画布,并
在单独的线程中执行绘图。我画的东西都显示出来了
正确,除了这一个动画。
这是动画的定义(在res/drawable中/
我的动画.xml:
下面是我把它画到画布上的方法:
animationDrawable ad=(animationDrawable)getResources().getDrawable(r.Drawable.my_动画);
广告画(画布);
ad.开始();
但只有第一帧出现在屏幕上。
我错过了什么?
谢谢你
最佳答案
如果我获得了正确的引用,您必须将AnimationDrawable
分配给imageview,正如http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html中的示例所示:
// Load the ImageView that will host the animation and
// set its background to our AnimationDrawable XML resource.
ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
img.setBackgroundResource(R.drawable.spin_animation);
// Get the background, which has been compiled to an AnimationDrawable object.
AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
// Start the animation (looped playback by default).
frameAnimation.start()
在您的情况下,您没有将
AnimationDrawable
分配给任何视图,所以我想这就是为什么它没有得到更新的原因。所以您必须手动调用AnimationDrawable.getFrame(int)
。如果您已经在使用一个单独的线程,为什么不同时涉及到动画的代码呢?这将使你的代码在我看来更加一致。