免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2438 | 回复: 0
打印 上一主题 下一主题

Android 实现uc浏览器一样的菜单 . [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-25 14:34 |只看该作者 |倒序浏览
Android 实现uc浏览器一样的菜单 .









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

布局如下:

1、菜单布局

利用GridView
  1. view plaincopy to clipboardprint?
  2. 01.<?xml version="1.0" encoding="utf-8"?>  
  3. 02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4. 03.    android:layout_width="wrap_content" android:layout_height="wrap_content"  
  5. 04.    android:orientation="vertical">  
  6. 05.    <GridView android:id="@+id/menu"  
  7. 06.        android:layout_width="fill_parent"  
  8. 07.        android:layout_height="fill_parent"  
  9. 08.        android:numColumns="2"  
  10. 09.         android:verticalSpacing="5dip"  
  11. 10.         android:horizontalSpacing="5dip"  
  12. 11.         android:stretchMode="columnWidth"  
  13. 12.         android:gravity="center"></GridView>  
  14. 13.</LinearLayout>  
  15. <?xml version="1.0" encoding="utf-8"?>
  16. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  17.         android:layout_width="wrap_content" android:layout_height="wrap_content"
  18.         android:orientation="vertical">
  19.         <GridView android:id="@+id/menu"
  20.                 android:layout_width="fill_parent"
  21.                 android:layout_height="fill_parent"
  22.                 android:numColumns="2"
  23.          android:verticalSpacing="5dip"
  24.          android:horizontalSpacing="5dip"
  25.          android:stretchMode="columnWidth"
  26.          android:gravity="center"></GridView>
  27. </LinearLayout>
复制代码
2、每一个item的布局
  1. view plaincopy to clipboardprint?
  2. 01.<?xml version="1.0" encoding="utf-8"?>  
  3. 02.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4. 03.    android:id="@+id/RelativeLayout_Item" android:layout_width="wrap_content"  
  5. 04.    android:layout_height="wrap_content" android:paddingBottom="5dip">  
  6. 05.    <ImageView android:id="@+id/item_image"  
  7. 06.        android:layout_centerHorizontal="true" android:layout_width="wrap_content"  
  8. 07.        android:layout_height="wrap_content"></ImageView>  
  9. 08.    <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"  
  10. 09.        android:layout_centerHorizontal="true" android:layout_width="wrap_content"  
  11. 10.        android:layout_height="wrap_content" android:text="选项"></TextView>  
  12. 11.</RelativeLayout>  
  13. <?xml version="1.0" encoding="utf-8"?>
  14. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  15.         android:id="@+id/RelativeLayout_Item" android:layout_width="wrap_content"
  16.         android:layout_height="wrap_content" android:paddingBottom="5dip">
  17.         <ImageView android:id="@+id/item_image"
  18.                 android:layout_centerHorizontal="true" android:layout_width="wrap_content"
  19.                 android:layout_height="wrap_content"></ImageView>
  20.         <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"
  21.                 android:layout_centerHorizontal="true" android:layout_width="wrap_content"
  22.                 android:layout_height="wrap_content" android:text="选项"></TextView>
  23. </RelativeLayout>
复制代码
主程序代码如下:

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP