歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

背景

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.       
  4. }  
在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.   
  3. public void setOnEndOfGame(OnEndOfGameInterface xOnEndOfGame){  
  4.         mOnEndOfGame = xOnEndOfGame;  
  5.     }  
  6.       
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