1

我已经创建了这个小游戏SurfaceView,现在我想在屏幕上显示游戏。由于SurfaceView另一个人正在调用 's update 和 render 方法,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);
  }

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

4

2 回答 2

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);

    }
    });
}

为游戏结束屏幕开始另一个活动可能会更好?

于 2013-06-17T19:18:36.133 回答
0

SurfaceView 是一个视图。你可以扩展 SurfaceView。

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

你就完成了。

于 2013-06-17T18:48:00.990 回答