--------------------------------------------strings.xml--------------------------------------------
<resources>
<string name="app_name">com.ch04</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Set</string>
<string name="menu_apple">苹果</string>
<string name="menu_orange">橘子</string>
<string name="menu_banana">香蕉</string>
<string name="menu_peach">桃子</string>
<string name="menu_peach_b">大桃子</string>
<string name="menu_peach_s">小桃子</string>
<string name="menu_copy">复制</string>
<string name="menu_stick">黏贴</string>
<string name="title_activity_main">com.ch04</string>
</resources>
--------------------------------------------Layout activity_main.xml-----------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/layout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".MainActivity" />
</RelativeLayout>
--------------------------------------------Menu activity_main.xml------------------------------
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_settings"
android:orderInCategory="100"
android:title="@string/menu_settings"/>
<item
android:id="@+id/menu_apple"
android:orderInCategory="10"
android:title="@string/menu_apple"/>
<item
android:id="@+id/menu_orange"
android:orderInCategory="20"
android:title="@string/menu_orange"/>
</menu>
--------------------------------------------MainActivity.java--------------------------------------
package com.ch04;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Toast;
/**
*
* 项目名称:com.ch04
* 类名称:MainActivity
* 类描述: 选项菜单、子菜单、上下文菜单、动态菜单
* 创建人:方勇
* 创建时间:2012-11-5 上午10:28:22
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity {
private View layout;
/* 会员标识 */
private final static int GROUP_MENU_VIP = 1;
/* 游客标识 */
private final static int GROUP_MENU_NORMAL = 0;
/* 会员状态 */
private int state = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
// 注册上下文菜单
registerForContextMenu(layout);
}
/* 初始化UI菜单 */
private void findViews() {
layout = findViewById(R.id.layout);
}
/* 显示消息 */
private void showResults(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
/* 当选项菜单被选中后执行的事件 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_apple:
showResults("苹果");
break;
case R.id.menu_orange:
showResults("橘子");
break;
case 10:
showResults("香蕉");
break;
default:
showResults("setting");
break;
}
return super.onOptionsItemSelected(item);
}
/* 选项菜单 */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 10, 5, R.string.menu_banana);
/* 子菜单 */
SubMenu subMenu = menu.addSubMenu(1, 10, 10, R.string.menu_peach);
subMenu.add(1, 10, 10, R.string.menu_peach_b);
subMenu.add(1, 20, 20, R.string.menu_peach_s);
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/* 动态菜单 */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
switch (state) {
case GROUP_MENU_VIP:
// 冻结菜单
menu.setGroupEnabled(GROUP_MENU_VIP, true);
break;
case GROUP_MENU_NORMAL:
// 游客菜单
MenuItem items = menu.getItem(GROUP_MENU_VIP);
items.setVisible(false);
break;
}
return super.onPrepareOptionsMenu(menu);
}
/* 当上下文菜单被选中后执行的事件 */
@Override
public boolean onContextItemSelected(MenuItem item) {
showResults("上下文菜单");
return super.onContextItemSelected(item);
}
/* 上下文菜单 */
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(0, 100, 100, R.string.menu_copy);
menu.add(0, 200, 200, R.string.menu_stick);
super.onCreateContextMenu(menu, v, menuInfo);
}
}
--------------------------------------------游客效果------------------------------------------------
--------------------------------------------VIP效果------------------------------------------------