Android如何實(shí)現(xiàn)uc瀏覽器一樣的菜單
作者:佚名
菜單開(kāi)發(fā)也是程序員經(jīng)常需要關(guān)注的,如何使菜單變得更加方便用戶使用是每一個(gè)開(kāi)發(fā)者都要面臨的實(shí)際問(wèn)題,今天給Android開(kāi)發(fā)者介紹一下如何開(kāi)發(fā)出像UC瀏覽器一樣的菜單。使用AlertDialog生成菜單,利用setView()方法設(shè)置菜單視圖。
菜單開(kāi)發(fā)也是程序員經(jīng)常需要關(guān)注的,如何使菜單變得更加方便用戶使用是每一個(gè)開(kāi)發(fā)者都要面臨的實(shí)際問(wèn)題,今天給Android開(kāi)發(fā)者介紹一下如何開(kāi)發(fā)出像UC瀏覽器一樣的菜單。使用AlertDialog生成菜單,利用setView()方法設(shè)置菜單視圖。
布局如下:
1、菜單布局
利用GridView
<?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>
<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、每一個(gè)item的布局
<?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="選項(xiàng)"></TextView>
</RelativeLayout>
<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="選項(xiàng)"></TextView>
</RelativeLayout>
主程序代碼如下:
代碼比較簡(jiǎn)單,注釋非常詳細(xì)
package com.cloay.down.utils;
import java.util.ArrayList;
import java.util.HashMap;
import com.cloay.down.R;
import android.app.AlertDialog;
import android.content.Context;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
/**
* 菜單工具類(lèi)
* MenuUtil.java
* @author cloay
* 2011-10-25
*/
public class MenuUtil {
private static AlertDialog menuDialog;// menu菜單Dialog
private static GridView menuGrid;
/** 菜單圖片 **/
static int[] menu_image_array = { R.drawable.menu_open_in_background, R.drawable.menu_redownload, R.drawable.menu_detail, R.drawable.menu_delete };
/** 菜單文字 **/
static String[] menu_name_array = { "打開(kāi)", "重新下載", "詳細(xì)", "刪除"};
public static void ShowMenuDialog(final Context context){
View menuView = View.inflate(context, R.layout.menu, null);
menuDialog = new AlertDialog.Builder(context)
.setView(menuView)
.create();
menuDialog.show();
menuGrid = (GridView) menuView.findViewById(R.id.menu);
menuGrid.setAdapter(getMenuAdapter(context, menu_name_array, menu_image_array));
menuGrid.setOnItemClickListener(new OnItemClickListener() {
//監(jiān)聽(tīng)menu按鈕事件
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 0: //open file
break;
case 1: //redownload 重新下載
break;
case 2: //file details
break;
case 3: //delete file
break;
}
}
});
}
/**
* 為menuGrid設(shè)置Adapter
* @param context
* @param menuNameArray
* @param imageResourceArray
* @return
*/
private static SimpleAdapter getMenuAdapter(Context context, String[] menuNameArray,
int[] imageResourceArray) {
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < menuNameArray.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemImage", imageResourceArray[i]);
map.put("itemText", menuNameArray[i]);
data.add(map);
}
SimpleAdapter simperAdapter = new SimpleAdapter(context, data,
R.layout.item_menu, new String[] { "itemImage", "itemText" },
new int[] { R.id.item_image, R.id.item_text });
return simperAdapter;
}
}
import java.util.ArrayList;
import java.util.HashMap;
import com.cloay.down.R;
import android.app.AlertDialog;
import android.content.Context;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
/**
* 菜單工具類(lèi)
* MenuUtil.java
* @author cloay
* 2011-10-25
*/
public class MenuUtil {
private static AlertDialog menuDialog;// menu菜單Dialog
private static GridView menuGrid;
/** 菜單圖片 **/
static int[] menu_image_array = { R.drawable.menu_open_in_background, R.drawable.menu_redownload, R.drawable.menu_detail, R.drawable.menu_delete };
/** 菜單文字 **/
static String[] menu_name_array = { "打開(kāi)", "重新下載", "詳細(xì)", "刪除"};
public static void ShowMenuDialog(final Context context){
View menuView = View.inflate(context, R.layout.menu, null);
menuDialog = new AlertDialog.Builder(context)
.setView(menuView)
.create();
menuDialog.show();
menuGrid = (GridView) menuView.findViewById(R.id.menu);
menuGrid.setAdapter(getMenuAdapter(context, menu_name_array, menu_image_array));
menuGrid.setOnItemClickListener(new OnItemClickListener() {
//監(jiān)聽(tīng)menu按鈕事件
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 0: //open file
break;
case 1: //redownload 重新下載
break;
case 2: //file details
break;
case 3: //delete file
break;
}
}
});
}
/**
* 為menuGrid設(shè)置Adapter
* @param context
* @param menuNameArray
* @param imageResourceArray
* @return
*/
private static SimpleAdapter getMenuAdapter(Context context, String[] menuNameArray,
int[] imageResourceArray) {
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < menuNameArray.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemImage", imageResourceArray[i]);
map.put("itemText", menuNameArray[i]);
data.add(map);
}
SimpleAdapter simperAdapter = new SimpleAdapter(context, data,
R.layout.item_menu, new String[] { "itemImage", "itemText" },
new int[] { R.id.item_image, R.id.item_text });
return simperAdapter;
}
}
責(zé)任編輯:景琦
來(lái)源:
Android