我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android课堂笔记(八)菜单

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android课堂笔记(八)菜单

一.菜单 1.创建菜单 菜单是 UI 的重要组成部分,由一组命令组成,这些命令可在设备上通过按钮、按键或手势访问 Android 为您提供以下三种类型的菜单: 选项菜单        Options Menu 上下文菜单    Context Menu 弹出菜单        Popup Menu 选项菜单是活动菜单项的集合,用户单击仿真器/设备上的 MENU 按钮时出现: 上下文菜单:用户触摸并按住已经注册以提供上下文菜单的视图时出现: 弹出菜单: 以附加到视图的垂直列表形式显示项的列表: 2.创建选项菜单 选项菜单包括某个活动的基本操作和必要导航项目 可以在 XML 菜单资源中定义菜单及其项目,然后通过代码来扩展菜单资源 可以在项目的  res/menu 文件夹中的单独 XML 文件中创建菜单资源 要创建菜单资源,应使用以下元素: :菜单资源的根节点 :用于创建菜单项 :允许对菜单项进行分类,可选项 在主活动方法中重写以下方法 : boolean onCreateOptionsMenu(Menu menu)   boolean onPrepareOptionsMenu(Menu menu)   boolean  onOptionsItemSelected(MenuItem item)   void onOptionsMenuClosed(Menu menu) 3.创建上下文菜单 在 Android 中,在用户在某个项目(该项目已为提供上下文菜单而注册)上长按时显示上下文菜单 要注册视图以提供上下文菜单,需要调用 registerForContextMenu() 方法 并向其传递需要上下文菜单的视图 要定义上下文菜单的外观和行文,需要重写您的活动的以下回调方法: onCreateContextMenu():在即将显示上下文菜单时调用 onContextItemSelected():在选中上下文菜单中的项时调用 4.创建弹出菜单 弹出菜单使用模式弹出窗口来显示菜单,它锚定到视图上 根据可用空间,弹出菜单出现在锚视图的下方或上方 它提供一个溢出样式的菜单、命令语句的第二部分和一个下拉列表,要在 XML 中定义菜单,需要: 使用其构造函数实例化弹出菜单 使用 MenuInflater 将您的菜单资源扩展到 Menu 对象 调用 PopupMenu.show() 5.实例展示
// CreateMenu-MainActivity.java
public class MainActivity extends Activity {
	RelativeLayout layout;//1:声明布局组件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout=(RelativeLayout)findViewById(R.id.layout1);  //2:获取布局组件
    }
     //此方法用于初始化菜单,menu:即将要显示的Menu实例,返回true显示该menu,false 则不显示;
     //(只会在第一次初始化菜单时调用) Inflate the menu; this adds items to the action bar
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	Log.i("optionMenu", "-------onCreateOptionsMenu------");    	
    	 MenuInflater inflater = getMenuInflater();//获取MenuInflater
    	 inflater.inflate(R.menu.main, menu);	//加载Menu资源
         return true;	//此方法必须返回true,否则不予显示
    }
   //在onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。     //(可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)
	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		Log.i("optionMenu", "-------onPrepareOptionsMenu------");
		return super.onPrepareOptionsMenu(menu);
	}
     // 菜单项被点击时调用,也就是菜单项的监听方法。 
     //通过这几个方法,可以得知,对于Activity,同一时间只能显示和监听一个Menu 对象。
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Log.i("optionMenu", "-------onOptionsItemSelected------");
		switch(item.getItemId()){ //判断选中项的id
		case R.id.red:
			layout.setBackgroundColor(Color.RED);
			break;
		case R.id.green:
			layout.setBackgroundColor(Color.GREEN);
			break;
		case R.id.yellow:
			layout.setBackgroundColor(Color.YELLOW);
			break;
		}
		return super.onOptionsItemSelected(item);
	}
    //每次菜单被关闭时调用
//(菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)
    @Override
	public void onOptionsMenuClosed(Menu menu) {
    	Log.i("optionMenu", "-------onOptionsMenuClosed------");
		super.onOptionsMenuClosed(menu);
	}}
 
//屏蔽一切因版本而导致新api中才能使用的方法报的android lint错误
@SuppressLint("NewApi") 
public class MainActivity extends Activity {
	Button b1;//1:声明组件
	Button b2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button)findViewById(R.id.button1);
        //注册上下文菜单到b1
        registerForContextMenu(b1);
        b2=(Button)findViewById(R.id.button2);
        b2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Log.i("menu", "---------  b2.setOnClickListener----------");
				 //第二个参数指定锚定视图
				PopupMenu pm = new PopupMenu(MainActivity.this, b2);
				//获取一个菜单填充器,用于填充菜单,调用inflate方法填充菜单
				//getMenu获取弹出菜单的菜单 
				pm.getMenuInflater().inflate(R.menu.main, pm.getMenu());
				pm.show();
				//给弹出菜单添加菜单选项点击监听器,监听菜单项的点击事件
				pm.setOnMenuItemClickListener(new OnMenuItemClickListener() {
					@Override
					public boolean onMenuItemClick(MenuItem item) {
						Log.i("menu", "---------  pm.setOnMenuItemClickListener----------");
						switch(item.getItemId()){
						case R.id.red:
							b2.setBackgroundColor(Color.RED);
							break;
						case R.id.green:
							b2.setBackgroundColor(Color.GREEN);
							break;
						case R.id.yellow:
							b2.setBackgroundColor(Color.YELLOW);
							break;
						}
						return true; //返回true说明该方法会处理该事件,不需要继续传播事}
    //当创建上下文菜单时三个参数自动传入
    //1. ContextMenu,使用的上下文菜单对象,就是显示菜单选项的那个菜单
    //2. 注册了上下文菜单的视图,这里是那个按钮
    //3. 上下文菜单信息,关于选中项菜单的额外信息
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
		     Log.i("menu", "---------  onCreateContextMenu()----------");
			getMenuInflater().inflate(R.menu.main, menu);
	}
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		  Log.i("menu", "---------  onContextItemSelected()----------");
		switch(item.getItemId()){
		case R.id.red:
			b1.setBackgroundColor(Color.RED);
			break;
		case R.id.green:
			b1.setBackgroundColor(Color.GREEN);
			break;
		case R.id.yellow:
			b1.setBackgroundColor(Color.YELLOW);
			break;}
		return true; //返回true表示该方法会处理菜单事件,不需要继续传播该事件
	}}
6.小结 可以在 xml 菜单资源中定义菜单及其项目,然后在应用程序代码中扩展菜单资源 MenuInflator 类有助于将菜单 XML 文件初始化到菜单对象中。 此类提供 inflate(int menuRes, Menu menu) 方法,该方法用于扩展在 XML 资源中声明的菜单层次结构 要在首次创建选项菜单后更改该菜单,可以重写 onPrepareOptionsMenu() 方法 上下文菜单类似于用户在 PC 上执行右击操作时所显示的菜单 上下文菜单用于提供对特定于某个项目的操作的访问
作者:Lyrelion


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android课堂笔记(八)菜单

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android课堂笔记(八)菜单

一.菜单 1.创建菜单 菜单是 UI 的重要组成部分,由一组命令组成,这些命令可在设备上通过按钮、按键或手势访问Android 为您提供以下三种类型的菜单: 选项菜单        Options Menu上下文菜单    Context
2022-06-06

python课堂笔记之django-da

模型类6.1 ORMdjango中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。在Django中主要是设计类:模型类。ORM另外一个作用:根据设计的类生成数据库中的表。6.2 模型类设计
2023-01-31

移动终端学习笔记之Android(一)Android第一堂课

移动终端 我们可以简单认为智能手机、平板、可穿戴式智能设备都是移动终端。当然大部分人最熟悉的就是手机。所以笔者在后续学习当中所针对的都是手机应用开发。 从1993年,IBM推出了首台智能手机IBM Simon。1996年,微软开发Windo
2022-06-06

Python学习课堂笔记:寻找重复的子树

本期的Python学习课堂笔记:寻找重复的子树题目:给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: 1 / \ 2 3 / / \
2023-06-02

Android仿优酷圆形菜单学习笔记分享

先来看看效果:首先来分析一下: 这个菜单可以分成三个菜单: 1.一级菜单(即最内圈那个菜单) 2.二级菜单(即中间圈那个菜单) 3.三级菜单(即最外圈那个菜单) 首先,可以将这三个菜单使用相对布局 一级菜单只有一个按钮(即home),可以控
2022-06-06

一位Python学生的课堂笔记,各位老师可以来点评啦

很多同学学习的时候不喜欢做笔记,工作的时候也是,前面给大家出了一篇关于编程工作时大家都做不做笔记,惊呆了我,竟然一大票的伙伴都是不做笔记的。今天跟大家分享一篇笔记,是我一个学生的课堂笔记!部分地方修改了一下!有不足的地方各位老师可以指出哈!
2023-06-02

一位初学Python同学的课堂笔记,仿佛看到当年的自己

这是一位刚学Python不久的伙伴投稿,我觉得很有意义,或许从这位同学的身上,能看到自己当年的影子!自从上了大学以后,慢慢的接触了很多的电脑知识,编程方面也是学过了很多了。刚开始的C语言,python,Java,前端技术HTML 以及 js
2023-06-01

敲黑板:滴滴云线上技术沙龙课堂笔记来咯|附PPT资料

一,秦晓辉《DEV和SRE的换位思考》3月26日,滴滴云✖️混沌说为大家请来了秦晓辉老师(滴滴高级专家工程师),和大家在线上见面,共同探讨《DVC和SRE的换位思考》。嘉宾主要从两个方面为大家分享自己的见解:从运维视角来看何为好的软件架构、
2023-06-03

2020/2/20 界面简介了解一下 Android studio【随堂笔记】

创建工程面板介绍File:主要包括创建项目、module、文件等、导入导出项目,保存等操作,进入设置界面等 Edit:主要包括复制粘贴、Find查找 View:主要是我们常用的一些窗口视图,如果我们关闭了某些窗口而找不到了可以到View去找
2022-06-06

SAP标准培训课程C4C10学习笔记(四)第四单元

这个单元的内容是产品主数据和Price list。Hierarchy UI上按钮New的enable/disable逻辑SAP CRM和C4C数据同步的两种方式概述:SAP PI和HCI一种轻量级的C4C业务数据同步到S/4HANA的方式:
2023-06-05

笔记本电脑如何提高菜单显示速度

小编给大家分享一下笔记本电脑如何提高菜单显示速度,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、在运行窗口中输入regdit,点击确定进入注册表编辑器;如图所示:2、在注册表编辑器中依次点击HEKY-CURRENT-US
2023-06-28

笔记本电脑中如何找回右键菜单记事本功能

这篇文章主要为大家展示了“笔记本电脑中如何找回右键菜单记事本功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“笔记本电脑中如何找回右键菜单记事本功能”这篇文章吧。1.点击开始菜单,依次展开所有程
2023-06-28

笔记本电脑开始菜单一片空白怎么办

小编给大家分享一下笔记本电脑开始菜单一片空白怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、在任务栏空白处,点击鼠标右键,点击打开“属性”。2、在打开的“任务栏和开始菜单属性”窗口中,切换到“开始菜单”选项卡,点击
2023-06-28

笔记本电脑如何找回电脑右键新建菜单

本文小编为大家详细介绍“笔记本电脑如何找回电脑右键新建菜单”,内容详细,步骤清晰,细节处理妥当,希望这篇“笔记本电脑如何找回电脑右键新建菜单”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、按下Win+R键打开运
2023-06-28

笔记本电脑怎么设置提高菜单显示速度

这篇文章给大家分享的是有关笔记本电脑怎么设置提高菜单显示速度的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、在运行窗口中输入regdit,点击确定进入注册表编辑器;如图所示:2、在注册表编辑器中依次点击HEKY
2023-06-28

笔记本电脑如何删除右键菜单新建公文包

这篇文章主要为大家展示了“笔记本电脑如何删除右键菜单新建公文包”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“笔记本电脑如何删除右键菜单新建公文包”这篇文章吧。1.首先点击桌面空白处,右键新建一个
2023-06-28

笔记本电脑如何清除多余的桌面右键菜单

小编给大家分享一下笔记本电脑如何清除多余的桌面右键菜单,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、在键盘“WIN+R”键同时操作下,启动运行框,在框内输入“regedit”,打开深度系统的注册表编辑器。2、为防止后面
2023-06-28

笔记本电脑右键菜单中如何添加控制面板

这篇文章给大家分享的是有关笔记本电脑右键菜单中如何添加控制面板的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.使用组合快捷键win键+r键打开运行窗口,在打开的运行窗口中输入“regedit”点击确定打开注册表
2023-06-28

笔记本电脑如何找回右键菜单中打开方式

小编给大家分享一下笔记本电脑如何找回右键菜单中打开方式,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.登录到系统桌面,使用组合快捷键win键+r键打开运行窗口,在打开的运行窗口中输入“regedit”回车确认,打开注册表
2023-06-28

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录