FileDocCategorySizeDatePackage
LunarLander.javaAPI DocAndroid 1.5 API5729Wed May 06 22:41:08 BST 2009com.example.android.lunarlander

LunarLander

public class LunarLander extends android.app.Activity
This is a simple LunarLander activity that houses a single LunarView. It demonstrates...
  • animating by calling invalidate() from draw()
  • loading and drawing resources
  • handling onPause() in an animation

Fields Summary
private static final int
MENU_EASY
private static final int
MENU_HARD
private static final int
MENU_MEDIUM
private static final int
MENU_PAUSE
private static final int
MENU_RESUME
private static final int
MENU_START
private static final int
MENU_STOP
private com.example.android.lunarlander.LunarView.LunarThread
mLunarThread
A handle to the thread that's actually running the animation.
private LunarView
mLunarView
A handle to the View in which the game is running.
Constructors Summary
Methods Summary
protected voidonCreate(android.os.Bundle savedInstanceState)
Invoked when the Activity is created.

param
savedInstanceState a Bundle containing state saved from a previous execution, or null if this is a new execution

        super.onCreate(savedInstanceState);

        // turn off the window's title bar
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        // tell system to use the layout defined in our XML file
        setContentView(R.layout.lunar_layout);

        // get handles to the LunarView from XML, and its LunarThread
        mLunarView = (LunarView) findViewById(R.id.lunar);
        mLunarThread = mLunarView.getThread();

        // give the LunarView a handle to the TextView used for messages
        mLunarView.setTextView((TextView) findViewById(R.id.text));

        if (savedInstanceState == null) {
            // we were just launched: set up a new game
            mLunarThread.setState(LunarThread.STATE_READY);
            Log.w(this.getClass().getName(), "SIS is null");
        } else {
            // we are being restored: resume a previous game
            mLunarThread.restoreState(savedInstanceState);
            Log.w(this.getClass().getName(), "SIS is nonnull");
        }
    
public booleanonCreateOptionsMenu(android.view.Menu menu)
Invoked during init to give the Activity a chance to set up its Menu.

param
menu the Menu to which entries may be added
return
true


                                    
    
        
        super.onCreateOptionsMenu(menu);

        menu.add(0, MENU_START, 0, R.string.menu_start);
        menu.add(0, MENU_STOP, 0, R.string.menu_stop);
        menu.add(0, MENU_PAUSE, 0, R.string.menu_pause);
        menu.add(0, MENU_RESUME, 0, R.string.menu_resume);
        menu.add(0, MENU_EASY, 0, R.string.menu_easy);
        menu.add(0, MENU_MEDIUM, 0, R.string.menu_medium);
        menu.add(0, MENU_HARD, 0, R.string.menu_hard);

        return true;
    
public booleanonOptionsItemSelected(android.view.MenuItem item)
Invoked when the user selects an item from the Menu.

param
item the Menu entry which was selected
return
true if the Menu item was legit (and we consumed it), false otherwise

        switch (item.getItemId()) {
            case MENU_START:
                mLunarThread.doStart();
                return true;
            case MENU_STOP:
                mLunarThread.setState(LunarThread.STATE_LOSE,
                        getText(R.string.message_stopped));
                return true;
            case MENU_PAUSE:
                mLunarThread.pause();
                return true;
            case MENU_RESUME:
                mLunarThread.unpause();
                return true;
            case MENU_EASY:
                mLunarThread.setDifficulty(LunarThread.DIFFICULTY_EASY);
                return true;
            case MENU_MEDIUM:
                mLunarThread.setDifficulty(LunarThread.DIFFICULTY_MEDIUM);
                return true;
            case MENU_HARD:
                mLunarThread.setDifficulty(LunarThread.DIFFICULTY_HARD);
                return true;
        }

        return false;
    
protected voidonPause()
Invoked when the Activity loses user focus.

        super.onPause();
        mLunarView.getThread().pause(); // pause game when Activity pauses
    
protected voidonSaveInstanceState(android.os.Bundle outState)
Notification that something is about to happen, to give the Activity a chance to save state.

param
outState a Bundle into which this Activity should save its state

        // just have the View's thread save its state into our Bundle
        super.onSaveInstanceState(outState);
        mLunarThread.saveState(outState);
        Log.w(this.getClass().getName(), "SIS called");