安卓游戏在屏幕上

时间:2013-06-17 18:20:36

标签: android surfaceview 2d-games

我使用SurfaceView创建了这个小游戏,现在我想通过屏幕显示游戏。由于SurfaceView的更新和渲染方法正被另一个Thread调用,我想知道如何通过XML正确地夸大游戏并将其添加到屏幕上。

PD:我的意思是我知道我可以使用对活动的引用,我可以做

public void render() {
  if(gameOver) {
    View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
    // code to get the layout
    // and finally 
    layout.addView(gameOverView);
  }

但问题是在UI线程中创建了activity,并且辅助线程调用了render(),因此它会引发异常。

2 个答案:

答案 0 :(得分:2)

如果你将它包装在runOnUiThread中,你的方法应该可行:

public void render() {
  if(gameOver)
    activity.runOnUiThread(new Runnable() {

    @Override
    public void run() {
        View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
            // code to get the layout
            // and finally 
            layout.addView(gameOverView);

    }
    });
}

通过屏幕开始另一项游戏活动可能会更好吗?

答案 1 :(得分:0)

SurfaceView是一个视图。您只需扩展SurfaceView即可。

  • 创建SurfaceView实例
  • 然后setContentView(您的Surface View实例)

你已经完成了。