- 论坛徽章:
- 0
|
Android 实现uc浏览器一样的菜单 .
使用AlertDialog生成菜单,利用setView()方法设置菜单视图。
布局如下:
1、菜单布局
利用GridView- view plaincopy to clipboardprint?
- 01.<?xml version="1.0" encoding="utf-8"?>
- 02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- 03. android:layout_width="wrap_content" android:layout_height="wrap_content"
- 04. android:orientation="vertical">
- 05. <GridView android:id="@+id/menu"
- 06. android:layout_width="fill_parent"
- 07. android:layout_height="fill_parent"
- 08. android:numColumns="2"
- 09. android:verticalSpacing="5dip"
- 10. android:horizontalSpacing="5dip"
- 11. android:stretchMode="columnWidth"
- 12. android:gravity="center"></GridView>
- 13.</LinearLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content" android:layout_height="wrap_content"
- android:orientation="vertical">
- <GridView android:id="@+id/menu"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:numColumns="2"
- android:verticalSpacing="5dip"
- android:horizontalSpacing="5dip"
- android:stretchMode="columnWidth"
- android:gravity="center"></GridView>
- </LinearLayout>
复制代码 2、每一个item的布局- view plaincopy to clipboardprint?
- 01.<?xml version="1.0" encoding="utf-8"?>
- 02.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- 03. android:id="@+id/RelativeLayout_Item" android:layout_width="wrap_content"
- 04. android:layout_height="wrap_content" android:paddingBottom="5dip">
- 05. <ImageView android:id="@+id/item_image"
- 06. android:layout_centerHorizontal="true" android:layout_width="wrap_content"
- 07. android:layout_height="wrap_content"></ImageView>
- 08. <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"
- 09. android:layout_centerHorizontal="true" android:layout_width="wrap_content"
- 10. android:layout_height="wrap_content" android:text="选项"></TextView>
- 11.</RelativeLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/RelativeLayout_Item" android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:paddingBottom="5dip">
- <ImageView android:id="@+id/item_image"
- android:layout_centerHorizontal="true" android:layout_width="wrap_content"
- android:layout_height="wrap_content"></ImageView>
- <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"
- android:layout_centerHorizontal="true" android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:text="选项"></TextView>
- </RelativeLayout>
复制代码 主程序代码如下:
代码比较简单,注释非常详细- view plaincopy to clipboardprint?
- 01.package com.cloay.down.utils;
- 02.
- 03.import java.util.ArrayList;
- 04.import java.util.HashMap;
- 05.
- 06.import com.cloay.down.R;
- 07.
- 08.import android.app.AlertDialog;
- 09.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.}
复制代码 |
|