`
348725767
  • 浏览: 105417 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

android封装的menu自定义菜单列表

阅读更多

自己封装的menu自定义菜单列表,首先必须创建一个类继承activity,让后要调用自定义菜单的类直接继承。

 

package com.cng;

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



import android.app.Activity;
import android.app.AlertDialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.DialogInterface.OnKeyListener;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;



public class MenuActivityAdapter extends Activity
{
	AlertDialog menuDialog;// menu菜单Dialog
	GridView menuGrid;
	View menuView; 
	final private int menuSettings=Menu.FIRST;  
    private static final int REQ_SYSTEM_SETTINGS = 0;    


	
	/** 菜单图片 **/
	int[] menu_image_array = {  R.drawable.xuetang_light,R.drawable.tizhong_light,
			R.drawable.maibo_light,
			R.drawable.tiwen_light, R.drawable.xueyang_light,
			 R.drawable.naodian_light,R.drawable.xindian_light,
			R.drawable.xueya_light, 
			R.drawable.denglu_light,
			R.drawable.shezhi_light};
	/** 菜单文字 **/
	String[] menu_name_array = { "", "", "", "", "", "",
			"", "", "", ""};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		
		menuView = View.inflate(this, R.layout.gridview_menu, null);
		// 创建AlertDialog
		menuDialog = new AlertDialog.Builder(this).create();
		menuDialog.setView(menuView);
		menuDialog.setOnKeyListener(new OnKeyListener() {
			public boolean onKey(DialogInterface dialog, int keyCode,
					KeyEvent event) {
				if (keyCode == KeyEvent.KEYCODE_MENU)// 监听按键
					dialog.dismiss();
				return false;
			}
		});

		menuGrid = (GridView) menuView.findViewById(R.id.gridview);
		menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
		/** 监听menu选项 **/
		menuGrid.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				Intent intent=new Intent();
				switch (arg2) { 
				
				case 0:// 搜索
					intent.setClass(MenuActivityAdapter.this, GlucoseList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 1:// 搜索
					intent.setClass(MenuActivityAdapter.this, WeightList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break; 
				case 2:// 搜索
					intent.setClass(MenuActivityAdapter.this, MaiboList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 3:// 搜索
					intent.setClass(MenuActivityAdapter.this, TiwenList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 4:// 搜索
					intent.setClass(MenuActivityAdapter.this, XueyangList.class);
					startActivity(intent);
					menuDialog.dismiss(); 
					break;
				case 5:// 搜索
					intent.setClass(MenuActivityAdapter.this, NaodianList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 6:// 搜索
					intent.setClass(MenuActivityAdapter.this, xinlv.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 7:// 搜索
					intent.setClass(MenuActivityAdapter.this, XueyaList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 8:// 搜索
					intent.setClass(MenuActivityAdapter.this, DengluList.class);
					startActivity(intent);
					menuDialog.dismiss();
					break;
				case 9:// 搜索
					startActivityForResult(new Intent(MenuActivityAdapter.this, Settings.class), REQ_SYSTEM_SETTINGS);
					menuDialog.dismiss();
					break;
				}
				
				
			}
		});
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add("menu");// 必须创建一项
		return super.onCreateOptionsMenu(menu);
	}
	
	private SimpleAdapter getMenuAdapter(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(this, data,
				R.layout.item_menu, new String[] { "itemImage", "itemText" },
				new int[] { R.id.item_image, R.id.item_text });
		return simperAdapter;
	}
	@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
	}
	 //Settings设置界面返回的结果   
    protected  void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if(requestCode == REQ_SYSTEM_SETTINGS)  
        {  
            //获取设置界面PreferenceActivity中各个Preference的值   
            String loginSwitchKey = getResources().getString(R.string.auto_login_switch_key);  
            String customizelist1Key = getResources().getString(R.string.customize_main_list1_key);
            String serverAddressKey = getResources().getString(R.string.server_address_key);
            //取得属于整个应用程序的SharedPreferences   
            SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);  
            Boolean updateSwitch = settings.getBoolean(loginSwitchKey, true);  
            String updateFrequency = settings.getString(customizelist1Key, "体重");
            String serverAddress = settings.getString(serverAddressKey, "172.16.10.254");
            //打印结果   
            Log.v("CheckBoxPreference_Main", updateSwitch.toString());  
            Log.v("ListPreference_Main", updateFrequency);
            Log.v("EditTextPreference_Main", serverAddress);
            
        }  
        else  
        {  
            //其他Intent返回的结果   
        }  
    }  
}

 

 

<?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="5"
         android:verticalSpacing="1dip" 
         android:horizontalSpacing="1dip"
         android:stretchMode="columnWidth"
         android:gravity="center"
         />
  
</LinearLayout>
 

 

<?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_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>
1
5
分享到:
评论

相关推荐

    android自定义menu

    2. **自定义菜单布局** - 如果需要更复杂的布局,可以创建一个XML文件(如`menu_custom.xml`)在`res/menu`目录下,定义菜单项的结构和样式。 - 在`onCreateOptionsMenu(Menu menu)`中,使用`MenuInflater`的`...

    Android自定义底部菜单

    在Android的应用中,经常会见到底部菜单.而在企业级的Android应用中,也存在同样的需求,但与微信这些大众软件的区别在于企业级的Android应用由于UI页面很多,每个...针对底部菜单进行专门的设计封装,就显得特别重要。

    android自定义通用PopupWindow

    封装`PopupWindow`的第一步是创建一个自定义的类,继承自`PopupWindow`。在这个类中,我们可以添加一些通用的方法,例如设置宽高、内容视图、背景颜色等。下面是一个基础的实现: ```java public class ...

    android自定义标题栏(已封装)

    本文将深入探讨如何在Android中创建并封装一个自定义标题栏,参考了链接中的博客文章《Android自定义标题栏(已封装)》。 首先,我们需要了解Android系统自带的Title Bar(在API 21及以上版本被称为ToolBar),它...

    自定义菜单

    在代码封装方面,我们可以创建一个自定义菜单的类,比如`CustomMenu`,它包含初始化菜单、设置菜单项、显示/隐藏菜单等方法。这样,Activity只需要实例化这个类,然后调用这些方法即可,无需关心菜单的具体实现细节...

    Android封装popwindow类(下拉菜单弹出和收缩效果)

    在Android开发中,`PopWindow`是一个非常实用的组件,常用于实现各种临时弹出窗口的效果,如下拉菜单、工具提示等。本教程将详细讲解如何封装一个`PopWindow`,实现下拉菜单的弹出和收缩效果。 首先,我们需要了解`...

    Android 自定义组件卫星菜单的实现

    本篇文章将详细探讨如何实现一个Android自定义组件——卫星菜单(Satellite Menu),也称为ArcMenu。卫星菜单是一种以中心按钮为触发点,围绕中心点展开的一组按钮布局,常用于导航或展示附加功能。 首先,我们定义...

    Android开发仿美团下拉列表菜单

    在Android应用开发中,创建一个类似美团的下拉列表菜单是一项常见的需求,它能为用户提供便捷的操作入口。本文将深入探讨如何实现这样一个功能,并提供一个名为`PopupMenuDemo`的示例代码来帮助开发者理解。 首先,...

    Android 导航菜单 RibbonMenu

    总的来说,`RibbonMenu`是一个富有创意的Android导航菜单设计,它通过动态的展示方式和层次感的UI,提升了应用的交互性和视觉吸引力。实现这样的功能需要对Android的基础组件、动画系统以及触摸事件处理有深入理解,...

    Android 简单封装一个精美、好用的菜单型PopupWindow

    在实际项目中,可以根据需求进行进一步的定制,比如添加过渡动画、自定义菜单样式、支持触摸滑动关闭等特性,提升用户体验。同时,考虑到不同设备的屏幕尺寸和方向变化,确保PopupWindow在各种场景下都能正常工作也...

    Android项目中自定义顶部标题栏

    在Android应用开发中,自定义顶部标题栏是一个常见的需求,它可以提供独特的用户界面风格和功能。下面我们将深入探讨如何在Android项目中实现自定义标题栏,包括定义标题栏布局、自定义TitleActivity以及实现在标题...

    Android-Android-NavMenu-master一个底部导航栏实现了显示未读消息数显示红点等效果的封装

    这个名为"Android-Android-NavMenu-master"的项目,专注于封装了一个底部导航栏组件,它包含了显示未读消息数和红点提示等功能,这对于提升用户体验和互动性至关重要。 首先,我们来了解一下底部导航栏的基本概念。...

    Android提高十八篇之自定义Menu(TabMenu)

    在这个过程中,我们将分析源码,并学习如何构建一个实用且美观的自定义菜单工具。 首先,让我们了解Android中的标准Menu系统。在Android中,Menu主要用于在活动(Activity)或对话框中显示一系列操作选项,通常在...

    Android底部菜单封装

    1. **灵活性**:应支持自定义菜单项的数量及样式。 2. **可扩展性**:随着应用的发展,可能需要增加新的功能项或者调整现有功能项的位置。 3. **易用性**:确保用户能够轻松地理解和使用这些菜单项。 4. **性能优化*...

    Android仿美团筛选菜单

    在Android应用开发中,"Android仿美团筛选菜单"是一个常见的需求,主要目的是为了提供用户友好的界面,让他们能够方便地筛选和查找所需信息。在这个项目中,开发者通过封装工具类和提供调用方法,实现了一级筛选和二...

    用PopupWindow自定义系统菜单

    - **菜单样式**:可以自定义菜单的样式,例如背景颜色、文字样式等,通过修改主题或创建新的样式资源文件。 - **动画效果**:`PopupWindow`支持显示和消失的动画,可以通过`setAnimationStyle`来设置。 在实际开发...

    自定义SlideMenu侧滑菜单

    在Android应用开发中,自定义SlideMenu是一种常见的设计模式,用于实现类似原生应用抽屉效果的侧滑菜单。这种菜单通常隐藏在主界面的左侧或右侧,通过手势滑动或者点击特定按钮来显示和隐藏,为用户提供更多的操作...

    Android高级应用源码-级联菜单,两级菜单自定义实现提供多种方式PopWindow,Fragment引用.zip

    在Android开发中,创建自定义的级联菜单(Cascading Menu)是一项常见的需求,它通常用于实现多级选择或导航。本项目提供了一个高级应用的源码示例,展示了如何自定义实现两级菜单,利用PopWindow和Fragment来构建...

    自定义控件打造史上最简单的侧滑菜单

    在Android应用开发中,侧滑菜单(Slide Menu)是一种常见的设计模式,用于提供导航和功能选项,用户只需从屏幕边缘向内滑动即可显示或隐藏菜单。本教程将引导你如何利用自定义控件来创建一个史上最简单的侧滑菜单。 ...

Global site tag (gtag.js) - Google Analytics