Opinion Menu的使用——开源项目Standup Timer学习总结(一)

来源:互联网 发布:翻墙用什么软件好 编辑:程序博客网 时间:2024/05/11 20:22

一、Opinion Menu 的使用

在android的SDK中options menu 是这样解释的:Options menus: The icon menus do not support item check marks and only show the item's condensed title. The expanded menus (only available if six or more menu items are visible, reached via the 'More' item in the icon menu) do not show item icons, and item check marks are discouraged.
具体的操作表现就是 在android手机上按 menu 键时显示的菜单,点击相应的菜单可以进行相应的操作。

  使用步骤

   Option menu的使用比较简单,首先在res文件夹下新建menu目录,然后往里面添加菜单的XML 文件。
复制代码
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/settings" android:title="@string/settings_label"
android:icon
="@android:drawable/ic_menu_preferences"
android:alphabeticShortcut
="s">
</item>

</menu>
复制代码

 

item:每一个item对应一项菜单。
  android:icon:用于指定菜单显示的图标。
  android:title:菜单的标题,显示在图标下面。
  android:alphabeticShortcut:菜单选择的快捷键。
  关于Menu的更多属性请查看SDK上的 Menu Resource。
  第二步是在Activity里重写 onCreateOptionsMenu 方法,并通过MenuInflater 将刚才的xml资源转化为Menu 实例。并显示在Activity里
复制代码
/**
* 创建系统菜单,该菜单通过按下Menu键显示
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//通过MenuInflater将XML 实例化为 Menu Object
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);

return true;
}
复制代码

 

  运行模拟器点击Menu键,就可以看到菜单目录的显示了。但是此时点击菜单并没有任何反应,原因是我们还没添加对应的处理事件。给menu添加处理事件需要重写public boolean onOptionsItemSelected(MenuItem item)方法。
复制代码
/**
* 菜单点击事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
Logger.d(
"Displaying the about box");
// 显示关于页
displayAboutBox();
return true;
case R.id.help:
Logger.d(
"Displaying the help dialog");
// 显示到帮帐页
displayHelpDialog();
return true;
case R.id.settings:
Logger.d(
"Displaying the settings");
// 跳转到配置页
displaySettings();
return true;
case R.id.teams:
Logger.d(
"Displaying the team configuration");
// 跳转到团队配置页
displayTeamConfiguration();
return true;
case R.id.quit:
Logger.d(
"Quitting");
// 退出程序
finish();
return true;
default:
Logger.e(
"Unknown menu item selected");
//返回False交由系统正常处理菜单,返回True则由本程序处理
return false;
}

}
复制代码

 

根据MenuItem的 getItemId()获取对应menu项的ID,这个id值对应xml中的  android:id。这样菜单功能就完成实现了,建议将一些不常用的功能链接放到菜单中例如:about us 、help 等等,因为用户可能不懂得如何使用菜单。