菜单Menu(AS开发实战第四章学习笔记)

4.5 菜单Menu

Android的菜单主要分两种,一种是选项菜单OptionMenu,通过按菜单键或点击事件触发,另一种是上下文菜单ContextMenu,通过长按事件触发。页面的布局文件放在res/layout目录下,菜单的布局文件存放在res/menu目录下。

1.选项菜单OptionMenu

弹出选项菜单的途径有3种:

(1)按菜单键

(2)在代码中手动打开选项菜单,即调用openOptionsMenu方法

(3)按工具栏右侧的溢出菜单按钮

实现选项菜单的功能需要重写以下两种方法:

onCreateOptionsMenu:在页面打开时调用,需要指定菜单列表的XML文件

onOptionsItemSelected:在列表的菜单项被选中时调用,需要对不同的菜单项做分支处理

菜单布局文件的代码样例:

<menu xmlns:android=http://schemas.android.com/apk/res/android>

<item

android:id=”@+id/menu_change_time”

android:orderInCategory=”1”

android:title=”改变时间”/>

   <item

android:id=”@+id/menu_change_color”

android:orderInCategory=”8”

android:title=”改变颜色”/>

  <item

android:id=”@+id/menu_change_bg”

android:orderInCategory=”9”

android:title=”改变背景”/>

</menu>

接下来是使用选项菜单的代码片段:

@Override

public Boolean onCreateOptionsMenu(Menu menu){

getMenuInflater().inflate(R.menu.menu_option, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if(id == R.id.……)……

else if…… ……

return true;

}

2.上下文菜单ContextMenu

弹出上下文菜单的途径有两种:

(1)默认在某个控件被长按时弹出,通常在onStart函数中加入registerForContextMenu方法为指定控件注册上下文菜单,在onStop函数中加入unregisterForContextMenu方法为指定控件注销上下文菜单。

(2)在除长按事件之外的其他事件中打开上下文菜单,先执行registerForContextMenu方法注册菜单,然后执行openContextMenu方法打开菜单,最后执行unregisterForContextMenu方法注销菜单

实现上下文菜单的功能需要重写以下两种方法:

onCreateContextMenu:在此指定菜单列表的XML文件,作为上下文菜单列表项的来源

onContextItemSelected:在此对不同的菜单项做分支处理

上下文菜单的布局文件格式同选项菜单,下面是使用上下文菜单的代码片段:

@Override

public void onClick(View v) {

if (v.getId() == R.id.btn_context) {

registerForContextMenu(v);

openContextMenu(v);

unregisterForContextMenu(v);

}

}

@Override

protected void onResume() {

registerForContextMenu(tv_context);

super.onResume();

}

@Override

protected void onPause() {

unregisterForContextMenu(tv_context);

super.onPause();

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{

getMenuInflater().inflate(R.menu.menu_option,
menu);

}

@Override

public boolean onContextItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == ……)

else if(id == ……)

return true;

}

原文地址:https://www.cnblogs.com/Briddle-ch/p/8479658.html

时间: 2024-10-11 09:49:39

菜单Menu(AS开发实战第四章学习笔记)的相关文章

《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内容主要都是介绍如何在屏幕上显示图像,事实上除了图像之外,音乐的播放也可以被理解为一种显示的方式,本节将学习在Cocos2d-x中播放声音的方法. (1)在HelloWorld.h中对HelloWorld类进行如下定义: class HelloWorld : public Cocos2d::Layer { pu

《Linux内核设计与实现》第四章学习笔记

第四章 进程调度 [学习时间:1小时45分 撰写博客时间:2小时10分钟] [学习内容:Linux的进程调度实现.抢占和上下文切换.与调度相关的系统调用] 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行的进程,那么总会有程序正在执行. 一.多任务 1.概念:多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉

《Cocos2d-x游戏开发实战精解》学习笔记1--在Cocos2d中显示图像

Cocos2d-x中的图像是通过精灵类来显示的.在Cocos2d-x中游戏中的每一个角色.怪物.道具都可以理解成是一个精灵,游戏背景作为一种特殊的单位将其理解成是一个精灵也没有什么不妥.在源文件本章目录下的项目ChapterThree03就展示了使用Cocos2d-x实现简单游戏开始界面的方法,主要就是通过精灵类来显示图像,其关键代码如范例3-5所示. [范例3-5 在Cocos2d-x中显示图像] Size size = Director::getInstance()->getVisibleS

《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字

在Cocos2d-x中要显示文字就需要用到Label控件.在3.x版本的Cocos2d中,舍弃了之前版本所使用的LabelTTF.LabelAtlas.LabelBMFont 3个用于显示文字的类,而使用一个新类Label取代.可想而知,Label实际上就是对之前3个类进行重新封装并统一渲染. 提示:实际上老版本的内容在3.x版本中依然是可以使用的. 下面是在Cocos2d-x中显示文字的一个例子,具体完整项目可在源文件本章目录下找到项目ChapterThree01查看. [范例3-1 在Coc

《Java从入门到精通》第四章学习笔记

第4章 流程控制 一.条件语句 1.if语句 1 if(布尔表达式){ 2 语句序列 3 } 4 /* 5 布尔表达式如果为true则执行if代码块中的语句序列: 6 反之则不执行. 7 */ 2.if…else语句 1 if(布尔表达式){ 2 语句序列 3 } 4 else{ 5 语句序列 6 } 7 /* 8 布尔表达式如果为true则执行if代码块中的语句序列: 9 反之则执行else代码块中的语句序列. 10 如果一段代码中有多处if..else,则每一个else总是与它上面最近的一个

Android艺术开发探索第四章——View的工作原理(下)

Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯一个内容,那就是自定义View 自定义View 自定义View的分类 自定义View的须知 自定义View的实例 自定义View的思想 一.自定义View的分类 自定义View百花齐放,没有什么具体的分类,不过可以从特性大致的分为4类,其实在我看来,就三类,继承原生View,继承View和继承Vie

Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序.自从Xamarin问世后,C#的作用就发生了很大的变化.它不仅可以编写关于Windows以及Windowsx Phone的应用程序,还可以编写iOS.Android的应用程序.本章将讲解如何使用C#编写一个简单的iOS应用程序.本文选自<Xamarin iOS开发实战> 1.1初识Xamarin Xamarin是一个跨平台的开发框架.Xamarin的产

MiS603开发板 第四章 流水灯实验

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第四章 流水灯实验 关于流水灯,网上有太多的例子了.其实只要掌握上面分频计数的技巧,设计流水灯是件极其简单的事情.从

Android深度探索——第四章读书笔记及心得

源代码的下载及编译 ——第四章读书笔记及心得 通过阅读书籍知道了Android源代码和Linux源代码的区别,了解了什么是Android移植.知道了Android移植就是Linux内核移植,而Linux内核移植主要就是Linux的驱动移植.为了开发和测试内核环境需要对环境进行搭建,进而知道了如何搭建环境.知道了如何下载Android/Linux源代码及配置Android源代码下载环境(并且知道Android源代码的下载并非一定要将4MB多的东西全部下载,也可以挑选着自己需要的东西下载,,可以利用