在我的安卓游戏中,有一个街机模式,游戏运行60秒。游戏画布是一个表面视图。我希望计时器仅在表面视图对用户可见时启动。如何知道surfaceview是可见的,以便可以启动计时器。在surfacecreated方法中启动计时器没有帮助,因为仍然需要一些时间才能看到surfaceview,因此用户几乎没有浪费时间。
答案 0 :(得分:1)
创建Surface并使其可见所需的时间应该可以在几毫秒而不是几秒内测量。
当调用surfaceCreated()
时,Surface是可见的,但是空白。您可能想要做的是在第一次unlockCanvasAndPost()
或eglSwapBuffers()
通话后启动计时器,这样您就会知道屏幕上有一些内容。
对此的一个变化是将你的计时器设置为61秒而不是60秒。在时钟达到60之前,你只需显示一个" Ready?" SurfaceView上没有真正启动游戏的消息。 (我在游戏开始时和Android Breakout中的方向更改后进行准备暂停。)
编辑:有关SurfaceView与活动生命周期之间互动的一些注意事项为here。