歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android仿ucweb的菜單效果

Android仿ucweb的菜單效果

日期:2017/3/1 10:19:52   编辑:Linux編程

先看一張圖

這裡有幾個要點
1,主界面有個listview+下面一個toolbar
2,按menu鍵的時候彈出一個dialog

問題是,彈出的dialog如何顯示成gridview的形式呢,你說對了,就是用一個gridview來顯示出來。
具體的思路就是如此了,首先主界面運用一個RelativeLayout來布局相對的位置,上面是個ListView,下面是個Gridview,當然,你也可以用其他的方式來布局先面的toolbar。

新建一個項目,我的MainActivity名字是UcwebDemoActivity,代碼如下:

  1. public class UcwebDemoActivity extends Activity {
  2. AlertDialog menuDialog;
  3. ListView listView;
  4. GridView menuGrid, toolbarGrid;
  5. View menuView;
  6. private boolean isMore = false;
  7. private final int ITEM_SEARCH = 0;
  8. private final int ITEM_FILE_MANAGER = 1;
  9. private final int ITEM_DOWN_MANAGER = 2;
  10. private final int ITEM_FULLSCREEN = 3;
  11. private final int ITEM_MORE = 11;
  12. private final int TOOLBAR_ITEM_PAGEHOME = 0;
  13. private final int TOOLBAR_ITEM_BACK = 1;
  14. private final int TOOLBAR_ITEM_FORWARD = 2;
  15. private final int TOOLBAR_ITEM_NEW = 3;
  16. private final int TOOLBAR_ITEM_MENU = 4;
  17. int[] menu_image_array = { R.drawable.menu_search,
  18. R.drawable.menu_filemanager, R.drawable.menu_downmanager,
  19. R.drawable.menu_fullscreen, R.drawable.menu_inputurl,
  20. R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,
  21. R.drawable.menu_sharepage, R.drawable.menu_quit,
  22. R.drawable.menu_nightmode, R.drawable.menu_refresh,
  23. R.drawable.menu_more };
  24. String[] menu_name_array = { "Search", "Filemanager", "Download",
  25. "Fullscreen", "Inputurl", "Bookmark", "Bookmark_sync", "Share",
  26. "Quit", "NightModeʽ", "Refresh", "More" };
  27. int[] menu_image_array2 = { R.drawable.menu_auto_landscape,
  28. R.drawable.menu_penselectmodel, R.drawable.menu_page_attr,
  29. R.drawable.menu_novel_mode, R.drawable.menu_page_updown,
  30. R.drawable.menu_checkupdate, R.drawable.menu_checknet,
  31. R.drawable.menu_refreshtimer, R.drawable.menu_syssettings,
  32. R.drawable.menu_help, R.drawable.menu_about, R.drawable.menu_return };
  33. String[] menu_name_array2 = { "Landscape", "SelectModelʽ", "Pageʽ",
  34. "Modeʽ", "Updown", "Update", "CheckNet", "Refreshtimer", "Setting",
  35. "Help", "About", "Return" };
  36. int[] menu_toolbar_image_array = { R.drawable.controlbar_homepage,
  37. R.drawable.controlbar_backward_enable,
  38. R.drawable.controlbar_forward_enable, R.drawable.controlbar_window,
  39. R.drawable.controlbar_showtype_list };
  40. String[] menu_toolbar_name_array = { "Home", "Back", "Forward", "Window",
  41. "List" };
  42. @Override
  43. public void onCreate(Bundle savedInstanceState) {
  44. super.onCreate(savedInstanceState);
  45. setContentView(R.layout.main);
  46. menuView = View.inflate(this, R.layout.gridview_menu, null);
  47. menuDialog = new AlertDialog.Builder(this).create();
  48. menuDialog.setView(menuView);
  49. menuDialog.setOnKeyListener(new OnKeyListener() {
  50. public boolean onKey(DialogInterface dialog, int keyCode,
  51. KeyEvent event) {
  52. if (keyCode == KeyEvent.KEYCODE_MENU)// �����
  53. dialog.dismiss();
  54. return false;
  55. }
  56. });
  57. menuGrid = (GridView) menuView.findViewById(R.id.gridview);
  58. menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
  59. menuGrid.setOnItemClickListener(new OnItemClickListener() {
  60. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  61. long arg3) {
  62. switch (arg2) {
  63. case ITEM_SEARCH:
  64. break;
  65. case ITEM_FILE_MANAGER:
  66. break;
  67. case ITEM_DOWN_MANAGER:
  68. break;
  69. case ITEM_FULLSCREEN:// ȫ��
  70. break;
  71. case ITEM_MORE:
  72. if (isMore) {
  73. menuGrid.setAdapter(getMenuAdapter(menu_name_array2,
  74. menu_image_array2));
  75. isMore = false;
  76. } else {
  77. menuGrid.setAdapter(getMenuAdapter(menu_name_array,
  78. menu_image_array));
  79. isMore = true;
  80. }
  81. menuGrid.invalidate();
  82. menuGrid.setSelection(ITEM_MORE);
  83. break;
  84. }
  85. }
  86. });
  87. toolbarGrid = (GridView) findViewById(R.id.GridView_toolbar);
  88. toolbarGrid.setBackgroundResource(R.drawable.channelgallery_bg);
  89. toolbarGrid.setNumColumns(5);
  90. toolbarGrid.setGravity(Gravity.CENTER);
  91. toolbarGrid.setVerticalSpacing(10);
  92. toolbarGrid.setHorizontalSpacing(10);
  93. toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array,
  94. menu_toolbar_image_array));
  95. toolbarGrid.setOnItemClickListener(new OnItemClickListener() {
  96. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  97. long arg3) {
  98. Toast.makeText(UcwebDemoActivity.this,
  99. menu_toolbar_name_array[arg2], Toast.LENGTH_SHORT)
  100. .show();
  101. switch (arg2) {
  102. case TOOLBAR_ITEM_PAGEHOME:
  103. break;
  104. case TOOLBAR_ITEM_BACK:
  105. break;
  106. case TOOLBAR_ITEM_FORWARD:
  107. break;
  108. case TOOLBAR_ITEM_NEW:
  109. break;
  110. case TOOLBAR_ITEM_MENU:
  111. menuDialog.show();
  112. break;
  113. }
  114. }
  115. });
  116. listView = (ListView) findViewById(R.id.ListView_catalog);
  117. listView.setAdapter(getMenuAdapter(menu_name_array2, menu_image_array2));
  118. }
  119. @Override
  120. public boolean onCreateOptionsMenu(Menu menu) {
  121. menu.add("menu");
  122. return super.onCreateOptionsMenu(menu);
  123. }
  124. @Override
  125. public boolean onMenuOpened(int featureId, Menu menu) {
  126. if (menuDialog == null) {
  127. menuDialog = new AlertDialog.Builder(this).setView(menuView).show();
  128. } else {
  129. menuDialog.show();
  130. }
  131. return false;
  132. }
  133. private SimpleAdapter getMenuAdapter(String[] menuNameArray,
  134. int[] imageResourceArray) {
  135. ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
  136. for (int i = 0; i < menuNameArray.length; i++) {
  137. HashMap<String, Object> map = new HashMap<String, Object>();
  138. map.put("itemImage", imageResourceArray[i]);
  139. map.put("itemText", menuNameArray[i]);
  140. data.add(map);
  141. }
  142. SimpleAdapter simperAdapter = new SimpleAdapter(this, data,
  143. R.layout.item_menu, new String[] { "itemImage", "itemText" },
  144. new int[] { R.id.item_image, R.id.item_text });
  145. return simperAdapter;
  146. }
  147. }
Copyright © Linux教程網 All Rights Reserved