屏幕上的android游戏

屏幕上的android游戏,android,surfaceview,2d-games,Android,Surfaceview,2d Games,我用SurfaceView创建了这个小游戏,现在我想在屏幕上显示这个游戏。由于另一个线程正在调用SurfaceView的更新和渲染方法,我想知道如何通过XML正确地膨胀游戏并将其添加到屏幕上 PD:我的意思是我知道我可以引用这个活动,我可以这样做 public void render() { if(gameOver) { View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);

我用
SurfaceView
创建了这个小游戏,现在我想在屏幕上显示这个游戏。由于另一个
线程正在调用
SurfaceView
的更新和渲染方法,我想知道如何通过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()
,因此它抛出了一个异常。

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

  • 创建您的SurfaceView实例
  • 然后设置ContentView(曲面视图实例)

您已经完成了。

如果您将其包装在Runonuith中,您的方式应该会起作用。请阅读:

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

    }
    });
}

在屏幕上为游戏启动另一个活动可能更好?

我这样做了,实际上我使用的是SurfaceView的扩展类。我创建了一个名为update()的方法,该方法每秒调用60次(60FPS),假设该方法将更新实体的统计信息,并检查gameOver。游戏结束后,游戏应该暂停并在屏幕上显示游戏。为什么不使用onDraw方法?哦,没有特别的原因,我想我可以使用它。这比调用
public void render(){if(gameover)activity.showGameOverScreen();…
?和have
showGameOverScreen()好吗
显示所有内容这取决于您的游戏架构。我会按照您的答案来回答,这似乎是正确的答案。顺便问一下,我应该使用
同步