Android三种菜单实例分析

本文实例讲述了Android的三种菜单。分享给大家供大家参考。具体分析如下:

Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)

一.选项菜单

当用户单击设备上的菜单按钮(Menu),触发事件弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会自动显示 更多 选项来展示显示。
创建方法:

1、覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当我们第一次打开菜单时调用。
2、调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法为菜单项设置图标。
3、当菜单项(MenuItem)被选中时,覆盖Acitivy的onOptionsMenuSelected()方法响应事件。

二、上下文菜单

当用户长按Activity页面时,弹出的菜单我们称为上下文菜单。我们经常在Windows中用鼠标右键单击弹出的菜单就是上下文菜单。

1、覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项MenuItem
2、覆盖onContextItemSelected()方法,响应菜单单击事件
3、调用registerForContextMenu()方法,为视图注册上下文菜单

三、子菜单

子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。

创建子菜单的方法

1、覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项
2、调用SubMenu的add()饭饭,添加子菜单项
3、覆盖onCreateItemSelected()方法,响应菜单单击事件

public class Main extends Activity {
// 菜单项ID
// FIRST为Menu类中的整形常量
private static final int ITEM1 = Menu.FIRST;
private static final int ITEM2 = Menu.FIRST + 1;
private static final int ITEM3 = Menu.FIRST + 2;
private static final int ITEM4 = Menu.FIRST + 3;
private static final int ITEM5 = Menu.FIRST + 4;
private static final int ITEM6 = Menu.FIRST + 5;
private static final int ITEM7 = Menu.FIRST + 6;
TextView myTV;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    myTV = (TextView) findViewById(R.id.myTV);
    // 此时为myTv设置上下文菜单,长按TextView时响应函数
    registerForContextMenu(myTV);
  }
@Override
// 点击菜单按钮响应的事件
public boolean onCreateOptionsMenu(Menu menu) {
 /* 一下代码为选项菜单测试
   // 添加菜单项
 // public abstract MenuItemadd(int groupId, int itemId, int order, CharSequence title)
 // 菜单所在的group,菜单的ID,排列顺序,显示的文字
 // add()方法返回一个MenuItem对象。而setIcon是MenuItem的方法
 menu.add(0, ITEM1, 0, "开始").setIcon(R.drawable.ic_launcher);
 menu.add(0, ITEM2, 0, "开始1");
 menu.add(1, ITEM3, 0, "开始2");
 menu.add(1, ITEM4, 0, "开始3");
 menu.add(1, ITEM5, 0, "开始4");
// menu.add(0, ITEM6, 0, "开始5");
// menu.add(0, ITEM7, 0, "开始6");
 */
 /**
  * 以下代码为添加子菜单的测试代码
  */
 // 添加子菜单
 SubMenu subFile = menu.addSubMenu("文件");
 SubMenu editFile = menu.addSubMenu("编辑");
 // 为子菜单添加菜单项
 subFile.add(0, ITEM1, 0, "新建");
 subFile.add(0, ITEM2, 0, "打开");
 return true;
}
@Override
// 菜单被选中时触发的事件
public boolean onOptionsItemSelected(MenuItem item) {
 /*
 // 在此说明一下,Menu相当于一个容器,而MenuItem相当于容器中容纳的东西
 switch(item.getItemId()) {
 case ITEM1:
  // 设置Activity的Title
  setTitle("开始游戏1");
  break;
 case ITEM2:
  setTitle("开始游戏2");
  break;
 case ITEM3:
  setTitle("开始游戏3");
  break;
 case ITEM4:
  setTitle("开始游戏4");
  break;
 case ITEM5:
  setTitle("开始游戏5");
  break;
 case ITEM6:
  setTitle("开始游戏6");
  break;
 case ITEM7:
  setTitle("开始游戏7");
  break;
 }
 */
 /**
  * 子菜单项响应代码
  */
 switch(item.getItemId()) {
 case ITEM1:
  // 设置Activity的Title
  setTitle("新建文件");
  break;
 case ITEM2:
  setTitle("打开文件");
  break;
 }
 return true;
}
@Override
// 创建上下文菜单
public void onCreateContextMenu(ContextMenu menu, View v,
  ContextMenuInfo menuInfo) {
 // 向上下文菜单中添加菜单项
 // 注意此处的menu是ContextMenu
 menu.add(0, ITEM1, 0, "红色背景");
 menu.add(0, ITEM2, 0, "绿色背景");
 menu.add(1, ITEM3, 0, "白色背景");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
 switch(item.getItemId()) {
 case ITEM1:
  myTV.setBackgroundColor(Color.RED);
  break;
 case ITEM2:
  myTV.setBackgroundColor(Color.GREEN);
  break;
 case ITEM3:
  myTV.setBackgroundColor(Color.WHITE);
  break;
 }
 return true;
}
}

希望本文所述对大家的Android程序设计有所帮助。

(0)

相关推荐

  • 代码分析Android实现侧滑菜单

    Android 侧滑菜单的实现,参考网上的代码,实现侧滑菜单.最重要的是这个动画类UgcAnimations,如何使用动画类来侧滑的封装FlipperLayout. 1.实现效果 2.动画类UgcAnimations package com.mmsx.base; import android.content.Context; import android.view.View; import android.view.ViewGroup.MarginLayoutParams; import and

  • Android仿微信菜单(Menu)(使用C#和Java分别实现)

    本篇是对安卓菜单使用编程方式实现,当然可以使用XML的方式完成同样的功能,基本Java和C#写法都是一致的,所以使用XML的方式在本篇中使用Java演示,需要注意的是,对于如果不是VS开发的话,那么资源文件名称必须以小写开头,否则会报错. 运行效果 C#实现 using Android.App; using Android.OS; using Android.Views; using Android.Widget; namespace MenuDemo { [Activity(Label = "

  • Android编程之ICS式下拉菜单PopupWindow实现方法详解(附源码下载)

    本文实例讲述了Android编程之ICS式下拉菜单PopupWindow实现方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 右边这个就是下拉菜单啦,看见有的地方叫他 ICS式下拉菜单,哎哟,不错哦! 下面先讲一下实现原理: 这种菜单实际上就是一个弹出式的菜单,于是我们想到android PopupWindow 类,给他设置一个view 在弹出来不就OK了吗. PopupWindow 的用法也很简单 主要方法: 步骤1.new 一个实例出来,我们使用这个构造方法即可, 复制代码 代码如

  • Android选项菜单用法实例分析

    本文实例讲述了Android选项菜单用法.分享给大家供大家参考.具体如下: Android平台下所提供的菜单大体上可分为三类:选项菜单.上下文菜单和子菜单. 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单.但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的. 对于携带图标的选项菜单,每次最多只能显示6个,当菜单选项多于6个时,将只显示前5个和一个扩展菜单选项,点击扩展菜单选

  • Android编程实现仿优酷旋转菜单效果(附demo源码)

    本文实例讲述了Android编程实现仿优酷旋转菜单效果.分享给大家供大家参考,具体如下: 首先,看下效果: 不好意思,不会制作动态图片,只好上传静态的了,如果谁会,请教教我吧. 首先,看下xml文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" a

  • Android编程之菜单实现方法

    本文实例讲述了Android编程之菜单实现方法.分享给大家供大家参考,具体如下: 菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机都要有一个"menu"键,即菜单键,由此可见菜单在Android程序中的重要与特殊,其中Android的SDK提供了三种类型:分别为options menu(常规菜单),context menu(上下文菜单)和submenu(子菜单).其中options menu是通过按Menu键来显示,context menu

  • Android开发之menu菜单

    Android系统里面有四种类型的菜单:options menu(选项菜单),context menu(上下文菜单),sub menu(子菜单),Popup menu(弹出菜单). 首先说 选项菜单(OptionsMenu) 一.方法介绍: public booleanonCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu . public booleanonOptionsItemSelected(MenuItem item):选中菜单项后发生的动作.

  • Android编程下拉菜单spinner用法小结(附2则示例)

    本文较为详细的总结分析了Android编程下拉菜单spinner用法.分享给大家供大家参考,具体如下: Spinner控件也是一种列表类型的控件,它的继承关系如下: java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGroup        ↳ android.widget.AdapterView<Textends android.widget.Adapter>          ↳ android.widget.A

  • Android编程实现二级下拉菜单及快速搜索的方法

    本文实例讲述了Android编程实现二级下拉菜单及快速搜索的方法.分享给大家供大家参考,具体如下: 一.我们要做什么? 上面有个搜索框,下面是一个二级下拉菜单. 输入查询内容,下面列表将显示查询结果. 二.界面设计 (1)这是主框架(部分属性已经省去,请看源码),从上至下分别是文本框,列表,二级列表. <?xml version="1.0" encoding="utf-8"?> <LinearLayout> <LinearLayout

  • Android编程实现自定义系统菜单背景的方法

    本文实例讲述了Android编程实现自定义系统菜单背景的方法.分享给大家供大家参考,具体如下: 不多说,上图,见代码. package lab.sodino.menutest; import android.content.Context; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.AttributeSet; import androi

随机推荐