自定义Menu菜单

package com.test.menu;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.Editable;
import android.text.method.KeyListener;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class CustomerMenuActivity extends Activity {
    /** Called when the activity is first created. */
	private View menuView;
	private GridView girdView;
	private AlertDialog menuDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
        /** 菜单图片 **/
        int[] menu_image_array = {  R.drawable.more_login,R.drawable.more_regist,
                R.drawable.more_about,
                R.drawable.more_exit};
        
        String[] names={"登录","注册","关于","退出"};
        menuView=View.inflate(this, R.layout.menu, null);

        menuDialog=new AlertDialog.Builder(this).create();
        Window window= menuDialog.getWindow();
        window.setGravity(Gravity.BOTTOM);
      
        menuDialog.setView(menuView);
        menuDialog.setOnKeyListener(new OnKeyListener() {
			
			@Override
			public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
				// TODO Auto-generated method stub
				System.out.println("onkey");
				if(keyCode==KeyEvent.KEYCODE_MENU)//监听按键
				{
					dialog.dismiss();
				}
				return false;
			}
		});
        
        
        girdView=(GridView) menuView.findViewById(R.id.gridview);
        girdView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 选中的时候为透明色

        girdView.setAdapter(getAdapter(menu_image_array, names));
        
        
        //gridview 条目点击事件
        girdView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				switch (position) {
				case 0:
					Toast.makeText(CustomerMenuActivity.this, "登录", 0).show();
					break;
					
				case 1:
					Toast.makeText(CustomerMenuActivity.this, "注册", 0).show();
					break;
				
				case 2:
					Toast.makeText(CustomerMenuActivity.this, "关于", 0).show();
					break;
			   
				case 3:
					Toast.makeText(CustomerMenuActivity.this, "退出", 0).show();
					break;

				}
				
			}
		});
        
        
    }
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	// TODO Auto-generated method stub
    	menu.add("menu");//必须创建一项
    	return super.onCreateOptionsMenu(menu);
    }
    
    
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
    	if(menuDialog==null){
    		menuDialog=new AlertDialog.Builder(this).setView(menuView).show();
    		
    	}else{
    		menuDialog.show();
    	}
    	return false;// 返回为true 则显示系统menu
    }
    
    
    
    
    
    private SimpleAdapter getAdapter(int []img, String[] names ){
    	
    	ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
    	for(int i=0;i<names.length;i++){
    		HashMap<String, Object> map=new HashMap<String, Object>();
    		map.put("img", img[i]);
    		map.put("text", names[i]);
    		data.add(map);
    	}
    	SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.menu_item, new String[]{"img","text"}, new int[]{R.id.item_image,R.id.item_text});
    	
    	return adapter;
    }
}





布局文件

<?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="fill_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="1dip" >

    <ImageView

        android:id="@+id/item_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >
    </ImageView>

    <TextView
        android:id="@+id/item_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/item_image"
        android:layout_centerHorizontal="true"
        android:text="文字" >
    </TextView>

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
   
    >
<GridView
         android:id="@+id/gridview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:numColumns="4"
         android:verticalSpacing="1dip"
         android:horizontalSpacing="1dip"
         android:stretchMode="columnWidth"
         android:gravity="center"
         />
 
</LinearLayout>



你可能感兴趣的:(自定义Menu菜单)