Android画布重绘30fps

时间:2011-03-15 23:48:40

标签: android 2d

我目前正试图在我的Android设备上实现简单的弹跳球(在2d中)(物理基于设备旋转和稍后会有多个球进入)。

我创建了一个CustomDrawView类,使用View函数扩展onDraw,在屏幕中央绘制一个圆圈。让它正确移动的数学是无关紧要的,因为我的问题是我应该在CustomDrawView上调用invalidate

  • 我应该根据时间制作一个新线程来处理这个问题吗?如Thread.sleep(1000/30); view.invalidate(30fps)
  • 我应该根据其他方法让它在同一个线程中运行吗?
当然电池是一个重要的因素,哪种方法最适合省电?

1 个答案:

答案 0 :(得分:2)

从我在Android视图中看到的情况来看,如果您计划使用帧率制作任何内容都非常重要,那么它们并不是最好的。他们非常快地滚雪球,并且使用的消息传递管道通常是你的程序在这个框架中做的最慢的事情。我现在将渲染移动到OpenGL中。使用SurfaceView,您仍然可以非常快速地进行设置(确定SurfaceView也不是很好,但比所有视图都好)。

如果我要使用视图,我会使用你的第一种方法并设置一个计时线程,使用它类似于标准的游戏循环执行更新然后触发抽奖然后等待确保完整的1/30第二个已经过去了。