目前我正在制作动画,其中有些鱼在四处移动。我已经成功添加了一条鱼并使用canvas和Bitmap使其成为动画。但是目前我正在尝试添加我在Photoshop中制作的背景,每当我将其作为位图添加并将其绘制到画布时,没有背景显示并且鱼开始滞后于屏幕。我想知道我是否需要创建一个新的View类并在不同的画布上绘图,或者我是否可以使用相同的一个?感谢您的帮助! 以下是你们感兴趣的代码:
public class Fish extends View {
Bitmap bitmap;
float x, y;
public Fish(Context context) {
super(context);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.fish1);
x = 0;
y = 0;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bitmap, x, y, null);
if (x < canvas.getWidth())
{
x += 7;
}else{
x = 0;
}
invalidate();
}
}
答案 0 :(得分:0)
您可以根据需要绘制尽可能多的位图。每个都将覆盖先前。因此,先绘制背景,然后绘制其他图像。请确保在主图像中使用透明像素,以便显示背景。
在您的代码中,不要调用Invalidate() - 这是导致Android调用onDraw()的原因,只有在某些数据发生变化且需要重新绘制时才能从其他地方调用。 / p>
您可以执行以下操作,其中View是包含动画的视图:
在您的活动中,将此代码放在onCreate()
中myAnimation();
然后
private void myAnimation()
{
int millis = 50; // milliseconds between displaying frames
theView.postDelayed (new Runnable ()
{
@Override public void run()
{
theView.invalidate();
myAnimation(); // you can add a conditional here to stop the animation
}
}, millis);
}