歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 實現uc浏覽器一樣的菜單

Android 實現uc浏覽器一樣的菜單

日期:2017/3/1 10:56:21   编辑:Linux編程

使用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. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import com.cloay.down.R;
  5. import android.app.AlertDialog;
  6. import android.content.Context;
  7. import android.view.View;
  8. import android.widget.AdapterView;
  9. import android.widget.AdapterView.OnItemClickListener;
  10. import android.widget.GridView;
  11. import android.widget.SimpleAdapter;
  12. /**
  13. * 菜單工具類
  14. * MenuUtil.java
  15. * @author cloay
  16. * 2011-10-25
  17. */
  18. public class MenuUtil {
  19. private static AlertDialog menuDialog;// menu菜單Dialog
  20. private static GridView menuGrid;
  21. /** 菜單圖片 **/
  22. static int[] menu_image_array = { R.drawable.menu_open_in_background, R.drawable.menu_redownload, R.drawable.menu_detail, R.drawable.menu_delete };
  23. /** 菜單文字 **/
  24. static String[] menu_name_array = { "打開", "重新下載", "詳細", "刪除"};
  25. public static void ShowMenuDialog(final Context context){
  26. View menuView = View.inflate(context, R.layout.menu, null);
  27. menuDialog = new AlertDialog.Builder(context)
  28. .setView(menuView)
  29. .create();
  30. menuDialog.show();
  31. menuGrid = (GridView) menuView.findViewById(R.id.menu);
  32. menuGrid.setAdapter(getMenuAdapter(context, menu_name_array, menu_image_array));
  33. menuGrid.setOnItemClickListener(new OnItemClickListener() {
  34. //監聽menu按鈕事件
  35. @Override
  36. public void onItemClick(AdapterView<?> parent, View view,
  37. int position, long id) {
  38. switch(position){
  39. case 0: //open file
  40. break;
  41. case 1: //redownload 重新下載
  42. break;
  43. case 2: //file details
  44. break;
  45. case 3: //delete file
  46. break;
  47. }
  48. }
  49. });
  50. }
  51. /**
  52. * 為menuGrid設置Adapter
  53. * @param context
  54. * @param menuNameArray
  55. * @param imageResourceArray
  56. * @return
  57. */
  58. private static SimpleAdapter getMenuAdapter(Context context, String[] menuNameArray,
  59. int[] imageResourceArray) {
  60. ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
  61. for (int i = 0; i < menuNameArray.length; i++) {
  62. HashMap<String, Object> map = new HashMap<String, Object>();
  63. map.put("itemImage", imageResourceArray[i]);
  64. map.put("itemText", menuNameArray[i]);
  65. data.add(map);
  66. }
  67. SimpleAdapter simperAdapter = new SimpleAdapter(context, data,
  68. R.layout.item_menu, new String[] { "itemImage", "itemText" },
  69. new int[] { R.id.item_image, R.id.item_text });
  70. return simperAdapter;
  71. }
  72. }
Copyright © Linux教程網 All Rights Reserved