当前位置: 代码迷 >> Android >> Android 中MenuInflater的运用(布局定义菜单)
  详细解决方案

Android 中MenuInflater的运用(布局定义菜单)

热度:40   发布时间:2016-05-01 16:16:19.0
Android 中MenuInflater的使用(布局定义菜单)!

大家好,我们上一节讲的是LayoutInflater 的 使用,而这一节我将讲一下MenuInflater ,顾名思义,LayoutInflater 是用来解析定义在layout 下的布局文件,那么MenuInflater 是不是用来解析定义在menu 目录下的菜单布局文件呢? 恭喜你答对了!(*^__^*) 嘻嘻……
我们传统意义上 的定义菜单感觉比较繁琐,当我们使用MenuInflater 来生成菜单,你会发现是多么的爽朗,呵呵,我今天的小Demo,是定义四个菜单,并且实现了一个菜单事件。就是我们点击设置 (Setting )菜单,进入手机设置状态!下面看一下效果图:
????
下面是实现Demo 的详细步骤:
一、建立一个Android 工程我们命名为MenuInflaterDemo .
二、在res 目录下创建menu 目录,并且创建options_menu.xml (我们定义的菜单)文件,代码如下:
  1. view?plaincopy?to?clipboardprint? ?
  2. <?xml?version="1.0"?encoding="utf-8"?>??? ?
  3. <menu??? ?
  4. ??xmlns:android="http://schemas.android.com/apk/res/android">??? ?
  5. ????<item?android:id="@+id/menu_add"?? ?
  6. ??????????android:title="Add"?? ?
  7. ??????????android:icon="@android:drawable/ic_menu_add"?? ?
  8. ???????????/>??? ?
  9. ????<item?android:id="@+id/menu_wallaper"?? ?
  10. ??????????android:title="Wallpaper"?? ?
  11. ??????????android:icon="@android:drawable/ic_menu_gallery"?? ?
  12. ???????????/>??? ?
  13. ???<item?android:id="@+id/menu_search"?? ?
  14. ??????????android:title="Search"?? ?
  15. ??????????android:icon="@android:drawable/ic_search_category_default"?? ?
  16. ???????????/>??? ?
  17. ???<item?android:id="@+id/menu_setting"?? ?
  18. ??????????android:title="Settings"?? ?
  19. ??????????android:icon="@android:drawable/ic_menu_preferences"?? ?
  20. ???????????/>??? ?
  21. </menu>?? ?
  22. <?xml?version="1.0"?encoding="utf-8"?>?
  23. <menu?
  24. ??xmlns:android="http://schemas.android.com/apk/res/android">?
  25. ????<item?android:id="@+id/menu_add"?
  26. ??????????android:title="Add"?
  27. ??????????android:icon="@android:drawable/ic_menu_add"?
  28. ???????????/>?
  29. ????<item?android:id="@+id/menu_wallaper"?
  30. ??????????android:title="Wallpaper"?
  31. ??????????android:icon="@android:drawable/ic_menu_gallery"?
  32. ???????????/>?
  33. ???<item?android:id="@+id/menu_search"?
  34. ??????????android:title="Search"?
  35. ??????????android:icon="@android:drawable/ic_search_category_default"?
  36. ???????????/>?
  37. ???<item?android:id="@+id/menu_setting"?
  38. ??????????android:title="Settings"?
  39. ??????????android:icon="@android:drawable/ic_menu_preferences"?
  40. ???????????/>?
  41. </menu>?
?
三、主类MenuInflaterDemo.java 的编码,这里写的代码很少哦,我这里只写了第四个菜单(Settings )的响应事件.全部代码如下:
  1. view?plaincopy?to?clipboardprint? ?
  2. package?com.android.tutor;??? ?
  3. import?android.app.Activity;??? ?
  4. import?android.content.Intent;??? ?
  5. import?android.os.Bundle;??? ?
  6. import?android.view.Menu;??? ?
  7. import?android.view.MenuInflater;??? ?
  8. import?android.view.MenuItem;??? ?
  9. public?class?MenuInflaterDemo?extends?Activity?{??? ?
  10. ????@Override?? ?
  11. ????public?void?onCreate(Bundle?savedInstanceState)?{??? ?
  12. ????????super.onCreate(savedInstanceState);??? ?
  13. ????????setContentView(R.layout.main);??? ?
  14. ????}??? ?
  15. ??????? ?
  16. ????@Override?? ?
  17. ????public?boolean?onCreateOptionsMenu(Menu?menu)?{??? ?
  18. ????????MenuInflater?inflater?=?getMenuInflater();??? ?
  19. ????????inflater.inflate(R.menu.options_menu,?menu);??????? ?
  20. ????????return?true;??? ?
  21. ????}??? ?
  22. ??????? ?
  23. ????@Override?? ?
  24. ????public?boolean?onOptionsItemSelected(MenuItem?item)?{??? ?
  25. ????????switch?(item.getItemId())?{??? ?
  26. ????????case?R.id.menu_add:??? ?
  27. ??????????????? ?
  28. ????????????break;??? ?
  29. ????????case?R.id.menu_wallaper:??? ?
  30. ????????????break;??? ?
  31. ????????case?R.id.menu_search:??? ?
  32. ????????????break;??? ?
  33. ????????case?R.id.menu_setting:??? ?
  34. ????????????showSettings();??? ?
  35. ????????????break;??? ?
  36. ????????}??? ?
  37. ????????return?super.onOptionsItemSelected(item);??? ?
  38. ????}??? ?
  39. ??????? ?
  40. ??????? ?
  41. ????private?void?showSettings(){??? ?
  42. ??????????? ?
  43. ?????final?Intent?settings?=?new?Intent(android.provider.Settings.ACTION_SETTINGS);??? ?
  44. ????????????settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK?|??? ?
  45. ????????????????????Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);??? ?
  46. ??????????????? ?
  47. ????????startActivity(settings);??? ?
  48. ???}??? ?
  49. }?? ?
  50. package?com.android.tutor; ?
  51. import?android.app.Activity; ?
  52. import?android.content.Intent; ?
  53. import?android.os.Bundle; ?
  54. import?android.view.Menu; ?
  55. import?android.view.MenuInflater; ?
  56. import?android.view.MenuItem; ?
  57. public?class?MenuInflaterDemo?extends?Activity?{ ?
  58. ????@Override?
  59. ????public?void?onCreate(Bundle?savedInstanceState)?{ ?
  60. ????????super.onCreate(savedInstanceState); ?
  61. ????????setContentView(R.layout.main); ?
  62. ????} ?
  63. ???? ?
  64. ????@Override?
  65. ????public?boolean?onCreateOptionsMenu(Menu?menu)?{ ?
  66. ?????MenuInflater?inflater?=?getMenuInflater(); ?
  67. ?????inflater.inflate(R.menu.options_menu,?menu);? ?
  68. ?????return?true; ?
  69. ????} ?
  70. ???? ?
  71. ????@Override?
  72. ????public?boolean?onOptionsItemSelected(MenuItem?item)?{ ?
  73. ?????switch?(item.getItemId())?{ ?
  74. ??case?R.id.menu_add: ?
  75. ??? ?
  76. ???break; ?
  77. ??case?R.id.menu_wallaper: ?
  78. ???break; ?
  79. ??case?R.id.menu_search: ?
  80. ???break; ?
  81. ??case?R.id.menu_setting: ?
  82. ???showSettings(); ?
  83. ???break; ?
  84. ??} ?
  85. ?????return?super.onOptionsItemSelected(item); ?
  86. ????} ?
  87. ???? ?
  88. ???? ?
  89. ????private?void?showSettings(){ ?
  90. ????? ?
  91. ?????final?Intent?settings?=?new?Intent(android.provider.Settings.ACTION_SETTINGS); ?
  92. ?????????settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK?| ?
  93. ?????????????????Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); ?
  94. ????????? ?
  95. ?????startActivity(settings); ?
  96. ???} ?
  97. }? ?

  相关解决方案