Android 实现uc浏览器一样的菜单


使用AlertDialog生成菜单,利用setView()方法设置菜单视图。

布局如下:

1、菜单布局

利用GridView

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="wrap_content" android:layout_height="wrap_content"  
  4.     android:orientation="vertical">  
  5.     <GridView android:id="@+id/menu"  
  6.         android:layout_width="fill_parent"  
  7.         android:layout_height="fill_parent"  
  8.         android:numColumns="2"  
  9.          android:verticalSpacing="5dip"  
  10.          android:horizontalSpacing="5dip"  
  11.          android:stretchMode="columnWidth"  
  12.          android:gravity="center"></GridView>  
  13. </LinearLayout>  
2、每一个item的布局
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/RelativeLayout_Item" android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content" android:paddingBottom="5dip">  
  5.     <ImageView android:id="@+id/item_image"  
  6.         android:layout_centerHorizontal="true" android:layout_width="wrap_content"  
  7.         android:layout_height="wrap_content"></ImageView>  
  8.     <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"  
  9.         android:layout_centerHorizontal="true" android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" android:text="选项"></TextView>  
  11. </RelativeLayout>  
主程序代码如下:

代码比较简单,注释非常详细

  1. package com.cloay.down.utils;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5.   
  6. import com.cloay.down.R;  
  7.   
  8. import android.app.AlertDialog;  
  9. import android.content.Context;  
  10. import android.view.View;  
  11. import android.widget.AdapterView;  
  12. import android.widget.AdapterView.OnItemClickListener;  
  13. import android.widget.GridView;  
  14. import android.widget.SimpleAdapter;  
  15. /** 
  16.  * 菜单工具类 
  17.  * MenuUtil.java 
  18.  * @author cloay 
  19.  * 2011-10-25 
  20.  */  
  21. public class MenuUtil {  
  22.     private static AlertDialog menuDialog;// menu菜单Dialog   
  23.     private static GridView menuGrid;  
  24.       
  25.     /** 菜单图片 **/  
  26.     static int[] menu_image_array = { R.drawable.menu_open_in_background, R.drawable.menu_redownload, R.drawable.menu_detail, R.drawable.menu_delete };  
  27.     /** 菜单文字 **/  
  28.     static String[] menu_name_array = { "打开""重新下载""详细""删除"};  
  29.     public static void ShowMenuDialog(final Context context){  
  30.         View menuView = View.inflate(context, R.layout.menu, null);  
  31.         menuDialog = new AlertDialog.Builder(context)  
  32.         .setView(menuView)  
  33.         .create();  
  34.         menuDialog.show();  
  35.         menuGrid  = (GridView) menuView.findViewById(R.id.menu);  
  36.         menuGrid.setAdapter(getMenuAdapter(context, menu_name_array, menu_image_array));  
  37.         menuGrid.setOnItemClickListener(new OnItemClickListener() {  
  38.             //监听menu按钮事件   
  39.             @Override  
  40.             public void onItemClick(AdapterView<?> parent, View view,  
  41.                     int position, long id) {  
  42.                 switch(position){  
  43.                 case 0:     //open file   
  44.                       
  45.                     break;  
  46.                 case 1:     //redownload 重新下载   
  47.                       
  48.                     break;  
  49.                 case 2:     //file details     
  50.                       
  51.                     break;  
  52.                 case 3:     //delete file   
  53.                       
  54.                     break;  
  55.                 }  
  56.             }  
  57.         });  
  58.     }  
  59.       
  60.     /** 
  61.      * 为menuGrid设置Adapter 
  62.      * @param context 
  63.      * @param menuNameArray 
  64.      * @param imageResourceArray 
  65.      * @return 
  66.      */  
  67.     private static SimpleAdapter getMenuAdapter(Context context, String[] menuNameArray,  
  68.             int[] imageResourceArray) {  
  69.         ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();  
  70.         for (int i = 0; i < menuNameArray.length; i++) {  
  71.             HashMap<String, Object> map = new HashMap<String, Object>();  
  72.             map.put("itemImage", imageResourceArray[i]);  
  73.             map.put("itemText", menuNameArray[i]);  
  74.             data.add(map);  
  75.         }  
  76.         SimpleAdapter simperAdapter = new SimpleAdapter(context, data,  
  77.                 R.layout.item_menu, new String[] { "itemImage""itemText" },  
  78.                 new int[] { R.id.item_image, R.id.item_text });  
  79.         return simperAdapter;  
  80.     }  
  81. }  

相关内容