Android 如何在一个游戏循环中处理不同的视图?

Android 如何在一个游戏循环中处理不同的视图?,android,multithreading,android-activity,view,surfaceview,Android,Multithreading,Android Activity,View,Surfaceview,我正在用android做一个游戏,我有两个类扩展了SurfaceView(TitleView和GameView)。我也有一个GameLoopThread,我在标题视图中初始化它,它在这个视图中绘制我的所有位图,但它只在这个视图中工作。因此,当我想切换到GameView时,我只是在标题视图中初始化GameLoopThread,而不是在GameView中初始化GameLoopThread,最后一个是黑屏,因为上面没有绘制任何内容 有人能帮我吗 这是我的GameLoopThread类: @Suppre

我正在用android做一个游戏,我有两个类扩展了SurfaceView(TitleView和GameView)。我也有一个GameLoopThread,我在标题视图中初始化它,它在这个视图中绘制我的所有位图,但它只在这个视图中工作。因此,当我想切换到GameView时,我只是在标题视图中初始化GameLoopThread,而不是在GameView中初始化GameLoopThread,最后一个是黑屏,因为上面没有绘制任何内容

有人能帮我吗

这是我的GameLoopThread类:

@SuppressLint("WrongCall")
public class GameLoopThread extends Thread {

    static final long FPS = 25;
    //private GameView view;
    private TitleView tview;
    private boolean running = false;

    public GameLoopThread(TitleView titleView) {
        this.tview = titleView;
    }

    public void setRunning(Boolean run) {
        running = run;
    }

    @Override
    public void run() {
        long ticksPS = 1000 / FPS;
        long startTime;
        long sleepTime;
        while (running) {
            Canvas c = null;
            startTime = System.currentTimeMillis();
            try {
                c = tview.getHolder().lockCanvas();
                synchronized (tview.getHolder()) {
                    tview.onDraw(c);
                }
            } finally {
                if (c != null) {
                    tview.getHolder().unlockCanvasAndPost(c);
                }
            }
            sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
            try {
                if (sleepTime > 0) {
                    sleep(sleepTime);
                } else {
                    sleep(25);
                }
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
    }

}

@Sergio,我有一个应用程序正在做类似的事情,视频视图,然后图片视图,但我有不同的活动类,主要活动是视频视图,然后当视频完成后,它开始图片活动。如果这就是你想要做的

通过调用sartActivity启动标题视图

私有静态最终标题\活动\请求\代码=1

    Intent titleIntent = new Intent(GameViewActivity.this, TitleViewActivity.class);
    startActivityForResult(imageIntent, TITLE_ACTIVITY_REQUEST_CODE);
标题活动完成后,从互动程序活动中调用以下命令,这将终止标题活动并重新启动游戏视图

          setResult(Activity.RESULT_OK, intent);
          finish();
在游戏活动视图中,使用此方法接收标题视图已完成的通知

 @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) 
  {
    if (requestCode == TITLE_ACTIVITY_REQUEST_CODE) //* notification from titleview 
    {
      switch (resultCode) 
      {
          case Activity.RESULT_OK:
              //* do something,
              break;
此代码非常适合我的应用程序,如果您有任何其他问题,请告诉我