Menu basics

1 vote · 1 comment

A menu for SilentPlayerActivity, with menu items for: Previous, Play/Pause and Next options. It demonstrates all the basics, and more..

raw ·
copy
· download
//////////////////////////////////////// contents of res/layout/player_menu.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/previous" android:title="@string/previous" android:enabled="false" android:icon="@android:drawable/ic_media_previous"/> <!--these may not be available in next api (level > 3), so be carefull--> <item android:id="@+id/play_pause" android:title="@string/play" android:icon="@android:drawable/ic_media_play"/> <item android:id="@+id/next" android:title="@string/next" android:icon="@android:drawable/ic_menu_next"/> </menu> ///////////////////////////////////////////// within SilentPlayerActivity class @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.layout.player_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.previous: previous(); //go to previous song in the playlist return true; case R.id.play_pause: isPlaying() ? pause() : play(); //toggle play/pause return true; case R.id.next: next(); //go to next song in the playlist return true; } return false; //should never happen } @Override public boolean onPrepareOptionsMenu(Menu menu) { //set play_pause menu item look if(isPlaying()) { menu .findItem(R.id.play_pause) .setTitle(R.string.pause) .setIcon(android.R.drawable.ic_media_pause); } else { menu .findItem(R.id.play_pause) .setTitle(R.string.play) .setIcon(android.R.drawable.ic_media_play); } return true; } ////////////////////////////////////// version 2: creating options menu in code public static final MENU_PREVIOUS = 0; //no more R.ids public static final MENU_PLAY_PAUSE = 1; public static final MENU_NEXT = 2; @Override public boolean onCreateOptionsMenu(Menu menu) { menu .add(0, MENU_PREVIOUS, 0, R.string.previous) .setIcon(android.R.drawable.ic_media_previous); menu .add(0, MENU_PLAY_PAUSE, 0, R.string.play) .setIcon (android.R.drawable.ic_media_play); menu .add(0, MENU_NEXT, 0, R.string.next) .setIcon(android.R.drawable.ic_media_next); return true; } ///////////////////////////////////////////////////////////////////////// notes //to desable/enable menu item menu.findItem(R.id.next).setEnabled(false); //it's mostly the same with context menus; we have: //onCreate/PrepareContextMenu(Menu menu) //onContextItemSelected(MenuItem item) //registerForContextMenu(View song) //submenus in code menu .addSubMenu(R.id.repeat) .add(R.id.one) .add(R.id.all) .add(R.id.none); //submenus in xml <item android:id="@+id/repeat" android:title="@string/repeat"> <menu> <item android:id="@+id/one" android:title="@string/repeat_one"></item> <item android:id="@+id/all" android:title="@string/repeat_all"></item> <item android:id="@+id/none" android:title="@string/repeat_none"></item> </menu>
Add a comment

1 Comment

Hi is there any widget or any hack to create a menu like windows start menu? what i want is i have to add two buttons in the bottom of the screen and when user click on the button menu should pop up similar to windows start menu!! any idea will be helpful.

Thanks Android Newbie

Reply · June 26, 2009, 8:33 p.m.