It's simple, you just need to create your own EventListener
public interface onGameFinishedListener { public void onGameFinished(GameView gameView); }
and some class that has the onGameFinished () method
public abstract class GameView extends SurfaceView implements SurfaceHolder.Callback{ List<onGameFinishedListener> listeners; public GameThread gameThread; protected int width; protected int height; public GameView(Context context) { super(context); width = 320; height = 480; listeners = new ArrayList<onGameFinishedListener>(); } public abstract void init(); public void registerGameFinishedListener(onGameFinishedListener listener) { listeners.add(listener); } protected void GameFinished(GameView gameView) { for (onGameFinishedListener listener : listeners) { synchronized(gameThread.getSurfaceHolder()) { listener.onGameFinished(gameView); } } } }
and then you implement onGameFinishedListener in your activity or view that you want to execute when you finish the game,
public class RocketActivity extends GameActivity implements onGameFinishedListener { private final int MENU = 0; private final int END = 1; private final int CONFIRMATION = 2; private RelativeLayout layout; private RocketView rocketView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); layout = new RelativeLayout(this); rocketView = new RocketView(this); rocketView.registerGameFinishedListener(this); rocketView.init(); layout.addView(rocketView); setContentView(layout); } @Override public void onGameFinished(GameView gameView) { runOnUiThread(new Runnable() { @Override public void run() { showDialog(END); } }); }
}
there. no need to rely on Android for EventListener. :)
source share