歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中的回調舉例:在surfaceview中結束宿主activity

Android中的回調舉例:在surfaceview中結束宿主activity

日期:2017/3/1 11:12:51   编辑:Linux編程

背景

SurfaceView是游戲開發中經常使用到的View,能夠實時的更新UI界面,實現游戲邏輯。在這裡的討論中,我設定了一個GameActivity , 在這個activity的布局中,放置了一個全屏的GameSurfaceView。GameActivity雖然是游戲的主體,但游戲的邏輯和顯示都是由GameSurfaceView負責。游戲開始後,GameSurfaceView在新開的線程中運行,並即時的更新游戲界面。

當游戲邏輯結束時,需要結束掉activity,以使得activity stack順序清晰。特別是在2.2系統下,不能一次性關閉app,只能每次都關閉掉各個acticity。

實現

如何在GameSurfaceView中結束掉這個activity呢?

增加回調接口,在GameSurfaceView中實現回調!

1,設定一個回調接口

  1. public interface OnEndOfGameInterface {
  2. public void onEndOfGame();
  3. }
在GameActivity中實現這個接口。
  1. public class GameActivity extends Activity implements OnEndOfGameInterface {
  2. //....
  3. @Override
  4. public void onEndOfGame() {
  5. this.finish();
  6. }
  7. }

在GameSurfaceView中定義回調類型的成員。 並定義一個public method 用來設置回調成員為GameActivity。

  1. protected OnEndOfGameInterface mOnEndOfGame ; //callback interface
  2. public void setOnEndOfGame(OnEndOfGameInterface xOnEndOfGame){
  3. mOnEndOfGame = xOnEndOfGame;
  4. }
GameActivity中,開啟GameSurfaceView的同時,必須調用setOnEndOfGame方法,設定好回調。
  1. mGameSurfaceView = (ReverseGameSurfaceView) findViewById(R.id.reverse_game_surface_view);
  2. mGameSurfaceView.setOnEndOfGame(this); //傳入this,設定自己為回調目標
  3. mGameSurfaceView.setMode(GameBasicSurfaceView.RUNNING);
如此,當GameSurfaceView結束時,就可以調用onEndOfGame方法,實現回調了!
Copyright © Linux教程網 All Rights Reserved