我在网格中有几张图片。 看起来像这样: [http://cdn.thenextweb.com/wp-content/blogs.dir/1/files/2013/06/jolla4.jpg] [1]
我没有使用Android Gridview,而是使用了画布,因为图标需要设置动画。我读到我需要使用画布进行游戏。
我使用SurfaceView(与线程结合)在屏幕上绘制图像。
class MySurface extends SurfaceView implements SurfaceHolder.Callback {
@Override
public void onDraw(Canvas canvas) {
//here i create the bitmaps and draw the icons on the screen.
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
thread.setRunning(true);
thread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
thread.setRunning(false);
while (retry) {
try {
thread.join();
retry = false;
} catch (InterruptedException e) {}
}
}
一切正常。使用代码在我的主要活动中调用Mysurface:
setContentView(new MySurface());
问题是surfaceview的画布是随机重绘的。我想做到这一点,我可以决定何时重绘画布和多少次。如何从主活动中调用onDraw函数?我不知道该怎么做。
我知道在线程中完成了
mySurface.onDraw(C);
答案 0 :(得分:2)
onDraw。屏幕刷新率取决于您的设备。如果刷新率为70,则onDraw每秒调用70次。 onDraw是在一个单独的线程上运行所以我不建议通过尝试从你的UI线程调用它来搞乱它。计算增量时间,它是自上次调用onDraw以来经过的时间。我们假设您希望为每秒50像素的位图设置动画,然后说 x + = deltaTime * 50;
这将使您的位图每秒仅在x轴上移动50个像素。
如果你只是说 x + = 1;
您的位图将每秒移动屏幕刷新率时间。由于所有设备都具有不同的刷新率,因此您需要使用增量时间,以便在所有设备中以相同的速度更新屏幕。否则,您的动画速度会因设备而异。