2011-03-15 110 views
2

我目前正试图在我的android设备上实现简单的弹跳球(在2D中)(基于设备旋转的物理和稍后进入的多个球)。Android画布重绘30fps

我创建了一个CustomDrawView类,该类扩展了ViewonDraw函数,该函数在屏幕的中心绘制了一个圆。使它正确移动的算术是无足轻重的,因为我的问题是我应该在CustomDrawView上调用invalidate

  • 我应该做一个新的线程来处理这个基于时间?如Thread.sleep(1000/30); view.invalidate(对于30fps)
  • 我应该让它在基于其他方法的同一线程中运行吗?

Ofcourse电池是一个重要的因素藏汉,哪种方法最适合节省电池?

回答

2

从我看到的Android视图来看,它们并不是最好的,如果你打算用帧率做任何事情是非常重要的。它们雪球速度非常快,并且使用的消息传递管道通常是您的程序执行该帧时最慢的事情。我现在将渲染转移到OpenGL中。使用SurfaceView,你仍然可以很快得到设置(OK SurfaceView也不是很好,但比所有Views更好)。

如果我要使用视图,我会使用你的第一个方法并设置一个定时线程,使用它像一个标准的Game循环执行更新然后触发一个绘制,然后等待确保完整的1/30一秒钟已经过去并循环。