Androidはucブラウザのようなメニューを実現


AlertDialogを使用してメニューを生成し、setView()メソッドを使用してメニュービューを設定します.
レイアウトは次のとおりです.
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>

2、各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="  "></TextView>
</RelativeLayout>

メイン・プログラム・コードは次のとおりです.
コードは比較的簡単で、注釈は非常に詳細です.
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;
/**
 *      
 * 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 = { "  ", "    ", "  ", "  "};
	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() {
			//  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  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;
	}
}

説明:転載は出典を明記してください!