package
com.lamp.menu;
import
android.app.Activity;
import
android.os.Bundle;
import
android.view.Menu;
import
android.view.MenuItem;
import
android.widget.Toast;
/**
* UI菜单组件
* 菜单组件分为三种:
* 1、选项菜单(Options Menu)
* (1)重写 onCreateOptionsMenu() 方法
* (2)创建选项菜单,两种实现方式:
*
<1>
使用硬填充的方式,即直接使用代码方式添加选项菜单
*
<2>
使用菜单填充器填充选项菜单,需要在res/menu目录下创建一个ui_menu的XML配置文件,在ui_menu配置文件中配置相应的item
* (3)重写 onOptionsItemSelected()方法,实现选项菜单的点击事件。
* 2、上下文菜单(Context Menu)
* 3、弹出菜单( Popup Menu)
*
@author
白世鑫
*
*/
public
class
MainActivity
extends
Activity {
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main
);
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
/****************第一种方式,硬填充****************/
//menu.add(0, 1, 100, "字体大小");
//menu.add(0, 2, 200, "字体颜色");
//menu.add(0, 3, 300, "普通菜单");
/****************第二种方式,使用菜单填充器填充选项菜单****************/
/****************MenuInflater:菜单填充器****************/
/****************使用ui_menu填充menu****************/
getMenuInflater().inflate(R.menu.
ui_menu
, menu);
return
true
;
}
/*
* 选项菜单的点击事件
*/
@Override
public
boolean
onOptionsItemSelected(MenuItem item) {
switch
(item.getItemId()) {
case
R.id.
start_game
:
Toast. makeText(MainActivity.
this
,
"正在读取游戏资源,请稍后...."
, Toast.
LENGTH_SHORT
).show();
break
;
case
R.id.
setting_game
:
Toast. makeText(MainActivity.
this
,
"正在进入游戏设置界面,请稍后...."
, Toast.
LENGTH_SHORT
).show();
break
;
case
R.id.
stop_game
:
Toast. makeText(MainActivity.
this
,
"正在保存游戏数据,马上退出...."
, Toast.
LENGTH_SHORT
).show();
break
;
default
:
break
;
}
return
super
.onOptionsItemSelected(item);
}
}
第二种实现方式,使用XML配置文件的方式中ui_menu的声明如下:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
menu
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<!-- @+id:表示创建一个id start_game:为id名 -->
<!-- @string/start_game:为引用 res/values/strings.xml文件中的资源 -->
<
item
android:id
=
"@+id/start_game"
android:orderInCategory
=
"100"
android:title
=
"@string/start_game"
/>
<
item
android:id
=
"@+id/setting_game"
android:orderInCategory
=
"200"
android:title
=
"@string/setting_game"
/>
<
item
android:id
=
"@+id/stop_game"
android:orderInCategory
=
"300"
android:title
=
"@string/stop_game"
/>
</
menu
>
|
ui_menu 中 引用的 strings.xml 中定义如下:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
resources
>
<
string
name
=
"app_name"
>
002_UI_Menu
</
string
>
<
string
name
=
"action_settings"
>
Settings
</
string
>
<
string
name
=
"hello_world"
>
Hello world!
</
string
>
<
string
name
=
"start_game"
>
开始游戏
</
string
>
<
string
name
=
"stop_game"
>
退出游戏
</
string
>
<
string
name
=
"setting_game"
>
游戏设置
</
string
>
</
resources
>
|
程序运行结果: