歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android仿ucweb的菜單效果

先看一張圖

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