Android菜单和对话框课件.pptx

上传人(卖家):三亚风情 文档编号:3347612 上传时间:2022-08-22 格式:PPTX 页数:29 大小:903.44KB
下载 相关 举报
Android菜单和对话框课件.pptx_第1页
第1页 / 共29页
Android菜单和对话框课件.pptx_第2页
第2页 / 共29页
Android菜单和对话框课件.pptx_第3页
第3页 / 共29页
Android菜单和对话框课件.pptx_第4页
第4页 / 共29页
Android菜单和对话框课件.pptx_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、Android基础与应用开发教程大连理工大学出版社第1页,共29页。Android菜单和对话框第7章第2页,共29页。7.1 Android菜单第3页,共29页。7.1 Android菜单第4页,共29页。7.1 Android菜单在Android SDK中,创建菜单对象不必从零开始。因为一个活动只与一个菜单相关联,因此Android创建这个菜单并将它传递给onCreateOptionsMenu()回调方法。这个方法让菜单和菜单项联系在一起,见下述代码:7.1.1 文本框组件TextView第5页,共29页。7.1 Android菜单 1.Activity类的回调方法onOptionsItem

2、Selected()单击菜单项时Android调用Activity类的回调方法onOptionsItemSelected(),其代码如下:7.1.2 菜单项的响应第6页,共29页。7.1 Android菜单2.通过监听器响应菜单项为了得到较好的性能,通常重载onOptionsItemSelected)方法来响应菜单。7.1.2 菜单项的响应第7页,共29页。7.1 Android菜单3.使用Intent响应菜单项利用MenuItem类的setIntent(intent)方法可将菜单项与意图关联起来(菜单项默认不与意图关联)。但关联后,别的东西就不再处理菜单项了,而是默认地利用startActi

3、vity(intent)去调用意图。为了能顺利工作,所有处理程序,尤其是onOptionsItemSelected()方法,应当调用其父类的onOptionsItemSelected)方法去处理不被处理的项。也就是说,系统给onOptionsItemSelected()一次机会首先去处理菜单项。(当然,接着就轮到监听器了)。如果不重载onOptionsItemSelected)方法,则Android架构的基类就会对菜单项做激活意图所需的事情;如果重载了这个方法且又不想用这个菜单项,就必须调用父方法,它会方便意图的调用。因此我们的做法是:要么不重载onOptionsItemSelected方法,

4、要么重载它并激活不想处理的菜单项的父方法。7.1.2 菜单项的响应第8页,共29页。7.1 Android菜单7.1.3 创建菜单的测试工具第9页,共29页。7.1 Android菜单 实现这个测试工具的步骤共分7步:创建XML布局文件;创建该布局文件的活动类;建立菜单;添加菜单项;添加二级菜单项;添加菜单项的响应;修改AndroidManifest.xml文件。7.1.3 创建菜单的测试工具第10页,共29页。7.2 其他菜单类型注意,当应用程序具有超过屏幕所能显示的更多菜单项时,在屏幕的右下角就会自动出现一个More菜单项,它就是所谓的扩展型(expanded)菜单。扩展型菜单有局限性,它

5、不能使用图标。用户只要单击More菜单项就能看到这些无图标的菜单。7.2.1 扩展型菜单Android不仅支持文本,也支持图像或图标菜单,即用图代替文本的菜单。但使用图标菜单需注意几个限制:不能用图标菜单表示扩展型菜单;图标菜单项不支持选中标志;如果图标菜单项中的文本过长,文本会被截短(也适用于文本菜单项),这取决于显示尺度。7.2.2 图标菜单第11页,共29页。7.2 其他菜单类型一个菜单对象可包含多个子菜单(SubMenu)对象。每个子菜单对象都可调用Menu.addSubMenu()方法添加到菜单对象内(见代码7-9)。向子菜单中添加菜单项与向菜单中添加菜单项相同,因为子菜单是从菜单对

6、象派生出来的。但是,不能再向子菜单中添加另外的子菜单。图7-1给出了菜单与子菜单之间的结构关系。7.2.3 子菜单大多数Windows应用程序都带有诸如File,Edit,View,Open,Close和Exit等菜单。这些菜单称为系统菜单。Android SDK创建选项菜单时,系统也可插人类似的一套菜单。但是Android SDK 2.0版并不能添加这些菜单,程序员可以通过代码添加系统菜单。调用基类(Activity)的onCreateOptionsMenu()方法可将系统菜单添加到由常数CATEGORY_ SYSTEM标识的组内。7.2.4 系统菜单第12页,共29页。7.2 其他菜单类型

7、 桌面程序广泛使用上下文菜单,譬如在Windows中右击某个UI元素就可以访问上下文菜单。Android通过所谓长单击的活动支持上下文菜单。长单击是鼠标在Andriod视图上按下的时间稍长。在手机类的设备上鼠标单击可用多种办法实现,这取决于导航机制:在手机上下述几种情况都相当于鼠标单击:按手机上的转轮、轻击或轻按手机触摸板,或手机按移动箭头按钮并单击箭头组中间的按钮等。总之,不论设备上鼠标单击如何实现,鼠标单击持续较长时间都是长单击。7.2.5 上下文菜单第13页,共29页。7.2 其他菜单类型7.2.5 上下文菜单第14页,共29页。7.2 其他菜单类型7.2.6 替换菜单Android引人

8、了一个新的菜单概念,即替换(alternative)菜单,它可把替换菜单项用作选项菜单、子菜单和上下文菜单的一部分。其特点是多个Android应用程序可相互使用它,即某应用程序包含另一应用程序的菜单,所以它是Android应用程序间通信或实用架构的一部分。选中选择菜单时,目标应用程序或活动就会用所需的数据URL启动,并使用被传送意图中的数据URL。现在需要使用第4章中有关内容提供者、内容URI、内容MIME类型和意图等概念。第15页,共29页。7.2 其他菜单类型7.2.7 菜单对数据变化的响应到目前为止,我们涉及的只是静态菜单,它们不会随屏幕变化动态地改变。创建动态菜单必须使用Android

9、提供的onPrepareOptionsMenu)方法6,它为待显示在屏幕上的标准选项菜单做准备。菜单每次显示时,它在该菜单显示之前被调用。使用此方法能有效地启用/禁用项目,或动态修改其内容。默认的实现能根据活动的状态更新系统菜单项目。派生类应该始终用基类的实现调用。设计菜单功能时应牢记这些。其参数为上次显示或onCreateOptionsMenu()首次初始化的选项菜单。若返回true则显示要显示的菜单,返回false将不会显示菜单。第16页,共29页。7.3 通过XML文件加载菜单7.3.1 XML菜单资源文件的结构定义菜单的XML文件的代码示于代码7-14中。其中用同等级的menu标记开始

10、,后面跟着一系列标记定义菜单项组,以及一系列定义菜单项。每个组合菜单项都分别用自己的+记指定其记。此外,每个记后面都关联一个符号名字。如menuGroup_main和menu_ testPick等。第17页,共29页。7.3 通过XML文件加载菜单7.3.2 XML菜单资源文件的展开假定代码7-14的XML文件名为my_menu.xml,并存人/res/menu子目录内。这将会自动生成一个资源引用id,即R,menu.my_menuo Android提供了一个android.view.MenuInflater类,它可借助这个菜单资源引用id,用XML文件中的菜单定义来填写Menu对象。具体的实

11、现代码如下:第18页,共29页。7.3 通过XML文件加载菜单7.3.3 对XML菜单项的响应响应XML菜单项的方式与编程创建菜单的响应方式相同,但也有微小的差别。像以前一样,将在onOptionsItemSelected回调方法中处理菜单项的响应。但此时可从Android资源获得某些帮助(见4.1.3节)。如7.3.1节所述,Android同时自动生成XML文件的资源ID和菜单项ID来区别各菜单项。这有利于菜单项的响应,因为不需要在XML菜单文件内给这些ID定义常数和考虑其唯一性,因为资源ID生成过程已考虑到这些。第19页,共29页。7.3 通过XML文件加载菜单7.3.4 附加的XML菜单

12、标记在构造XML文件时,必须知道可能使用的各种XML标记。查看Android SDK中的API演示(demos)就能很快获得这些信息。这些Android API演示包含了一系列菜单来帮助查看Android的各种编程问题。看一下/res/menu子目录也可发现许多XML菜单的例子。在此简述一些重要的标记。第20页,共29页。7.3 通过XML文件加载菜单7.3.4 附加的XML菜单标记第21页,共29页。7.4 Android对话框7.4.1 警告对话框警告对话框(Alert)通常包含确认表单或调试的简单消息。考虑下面HTML页面中常见的调试示例:Android未直接提供创建警告对话框的函数,我

13、们只能用警告对话框构建器android.app.AlertDialog.Builde:类来构建和处理警告对话框。该构建器类构建的对话框可执行的任务是:读取消息并用Yes或No进行响应;从其列表中挑选一个或多个项目;观察应用程序进展情况;从一组选项中选取一个选项;继续运行程序之前提示用户进行响应。第22页,共29页。7.4 Android对话框7.4.1 警告对话框构建这些对话框和用菜单项激活该对话框需遵循的步骤为:构建Builder对象;设置其显示参数,譬如按钮数量、项目列表等;设置这些按钮的回调方法;启动Builder具体构建对话框,其类型取决于Builder对象的设置;利用Dialog.s

14、how()显示对话框。第23页,共29页。7.4 Android对话框7.4.2 提示对话框创建提示对话框所要遵循的步骤是:为提示对话框提供一个布局视图;将该布局加载到视图类内;构建一个Builder对象;在Builder对象内设置该视图;设置按钮和它们的回调来捕捉输人的文本;用警告对话框builder来创建该对话框;显示该对话框。第24页,共29页。7.5 进度条对话框进度条对话框(ProgressDialog)是AlertDialog类的扩展,它可用两种形式显示任务的进度:用纺车形式显示进度(对于进度不确定的任务,见图7-6)和用进度条显示进度(而对于进度确定的任务,见图7-7)。进度条对

15、话框也可以提供按钮,譬如取消下载的按钮等。第25页,共29页。7.5 进度条对话框7.5.1 显示进度条显示进度条动画的操作步骤为:用ProgressDialog类的构造函数ProgressDialog(Context)进行初始化;用setProgressStyle(int)设置进度样式为STYLEHORIZONTAL,并设置其他属性,如消息;调用show)或用onCreateDialog(int)回调来返回ProgressDialog,为显示对话做好准备;用迄今完成的总百分量调用setProgress(int)或用该总百分量与增量值之和调用incrementProgressBy(int)都可

16、增加显示的进度量。第26页,共29页。7.6 托管对话框托管对话框(managed dialog)是在其生命周期内由活动管理的对话框。前面诸例子中所创建的对话框,其生命周期都是由对话框自己管理的。自己管理的优点是代码比较简单明了,需要时就创建,完成后就自动销毁;缺点是每次调用都需要创建对话框对象,内存开销比较大。而托管对话框只创建一次就能多次使用,所以其核心概念是复用(Multiplex),它是一种资源池概念。第27页,共29页。7.7 本章小结我们对于Android的菜单和对话框做了较全面的介绍,它们是UI编程中的重要组件。通过这些介绍,我们可了解Android中各种菜单的使用方法,包括子菜单、图标菜单、上下文菜单和替换菜单。同时阐述了用XML菜单资源来提高菜单的效率的问题。我们还建立了菜单的测试工具,它不仅可用于测试菜单,而且可用于其他程序的测试。菜单提供了激活和测试新功能的简单手段。本章也阐述了Android对话框所具有的特殊挑战性。其中包括异步对话框和模态对话框的意义,并介绍了托管对话框的意义和用法。第28页,共29页。感谢观看第29页,共29页。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Android菜单和对话框课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|