A menu for SilentPlayerActivity, with menu items for: Previous, Play/Pause and Next options. It demonstrates all the basics, and more..
//////////////////////////////////////// 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>
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