Menu 使用

Menu

[功能]
Menu 对手机界面友好来说 是不可缺少的
而且 不仅可以通过java来创建/使用 menu 还可以通过xml 来创建/使用


[原理]
1. android 自身提供了对 menu 的良好支持 但是需要注意一点:menu 是绑定在 Activity 的。
2. 我们要做的就是:填充下列函数的实现部分:
public boolean onCreateOptionsMenu(Menu menu)
public boolean onOptionsItemSelected(MenuItem item)
public boolean onPrepareOptionsMenu(Menu menu)

以上3个函数的用途 从函数名应该就能知道了 就不多说了 比较特殊的是 public boolean onPrepareOptionsMenu(Menu menu) 这个函数会在你每次点击MENU键时被调用 所以我们可以在这里根据一些状态的变化来实时更新 menu 的内容 比如标题或作用

比如:有一个播放的功能 要求有一个menu 用来 播放/暂停 功能 且要二者公用一个 menu 且该menu 的标题要实时改变 比如 如果此刻正在播放 要求其标题为"暂停" 反之为"播放" 那么应该如何实现呢? (设:该menu的id为: int play = Menu.FIRST +3 ).代码如下:

private static final int play = Menu.FIRST +3;
MediaPlay mp = new MediaPlay();
MenuItem item = menu.findItem(play );

if(mp.isPlaying()){
item.setTitle("stop");
}
else {
item.setTitle("play");
}



[代码]
1. menu @ java
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MenuAdd1Usage extends Activity {
private static final int Menu1 = Menu.FIRST;
private static final int Menu2 = Menu.FIRST+1;
private static final int Menu3 = Menu.FIRST+2;
private static final int Menu4 = Menu.FIRST+3;
private static final int Menu5 = Menu.FIRST+4;
private static final int Menu6 = Menu.FIRST+5;
private static final int Menu7 = Menu.FIRST+7;

public int FLAG_STATUS = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}


public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, Menu1, 0, "Menu-1").setIcon(R.drawable.se32);
menu.add(0, Menu2, 0, "Menu-2").setIcon(R.drawable.heart);
menu.add(0, Menu3, 0, "Menu-3");
menu.add(0, Menu4, 0, "Menu-4");
menu.add(0, Menu5, 0, "Menu-5");
menu.add(0, Menu6, 0, "Menu-6");
menu.add(0, Menu7, 0, "Menu-7");

return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Menu1:
//to fill action listened by MenuItem
break;

}
return false;
}

public boolean onPrepareOptionsMenu(Menu menu) {

Log.d("TAG","-------------------------");

MenuItem item = menu.findItem(Menu1);
item.setEnabled(false);

//to query menu
//MenuItem item = menu.findItem(MENU_QUIT);
//item.setChecked(false);
//item.setTitle("update");

/* to update menu
if(FLAG_STATUS == 0){
item.setTitle("QUIT-1");
FLAG_STATUS = 1;
}
else {
item.setTitle("QUIT-0");
FLAG_STATUS = 0;
} */


/* to add menu
if(FLAG_STATUS == 0){
menu.add(0, MENU_NEW_NEW, 0, "New NEW");
}
*/

return true;
}

}


2. menu @ xml
public class MenuAdd2Usage extends Activity {
public int FLAG_STATUS = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}


public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.layout.menu_item, menu);
return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Item_1:
Log.d("TAG","[Item_1]");
break;

case R.id.Item_2:
Log.d("TAG","[Item_2]");
break;
case R.id.Item_3:
Log.d("TAG","[Item_3]");
break;
}
return false;
}

public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.Item_2);
item.setEnabled(false);
/*
if(FLAG_STATUS == 0){
item.setTitle("QUIT-1");
FLAG_STATUS = 1;
}
else {
item.setTitle("QUIT-0");
FLAG_STATUS = 0;
}
*/
return true;
}

}


menu_item.xml
<?xml version="1.0" encoding="utf-8"?>  
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/Item_1"
android:title="Item_1"
/>
<item
android:id="@+id/Item_2"
android:title="Item_2"
/>
<item
android:id="@+id/Item_3"
android:title="Item_3"
android:enabled="false"
/>
</menu>



over!!!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值