首页 android应用开发技术2015秋课件03事件处理

android应用开发技术2015秋课件03事件处理

举报
开通vip

android应用开发技术2015秋课件03事件处理Android事件处理浙大软件学院梁秀波纲要Android的事件处理概述基于监听的事件处理基于回调的事件处理响应系统设置事件Handler消息传递机制1、Android的事件处理概述不管是桌面应用还是手机应用程序,面对最多的就是用户,经常需要处理的就是用户动作——也就是需要为用户的动作提供响应,这种为用户动作提供响应的机制就是事件处理。Android提供了强大的事件处理机制,包括两套事件处理机制:基于监听的事件处理基于回调的事件处理2、基于监听的事件处理基于监听的事件处理是一种“面向对象”的事件处理,主要涉及如下三...

android应用开发技术2015秋课件03事件处理
Android事件处理浙大软件学院梁秀波纲要Android的事件处理概述基于监听的事件处理基于回调的事件处理响应系统设置事件Handler消息传递机制1、Android的事件处理概述不管是桌面应用还是手机应用程序,面对最多的就是用户,经常需要处理的就是用户动作——也就是需要为用户的动作提供响应,这种为用户动作提供响应的机制就是事件处理。Android提供了强大的事件处理机制,包括两套事件处理机制:基于监听的事件处理基于回调的事件处理2、基于监听的事件处理基于监听的事件处理是一种“面向对象”的事件处理,主要涉及如下三个对象。EventSource(事件源):事件发生的场所,通常就是各个组件,例如窗口、按钮、菜单等。Event(事件):事件封装了界面组件上发生的特定事情,通常是一次用户操作,如果程序需要获得界面组件上所发生事件的相关信息,一般通过Event对象来取得。EventListener(事件监听器):负责监听事件源所发生的事件,并对各种事件作出相应的响应。2、基于监听的事件处理Android的事件处理机制是一种委派式事件处理方式:普通组件(事件源)将整个事件处理委托给特定的对象(事件监听器);当该事件源发生指定的事件时,就 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 委托的事件监听器,由事件监听器来处理这个事件。每个组件均可以针对特定的事件指定一个事件监听器,每个事件监听器也可监听一个或多个事件源。同时也可以让一类事件使用同一个事件监听器来处理。接下来,看一下事件处理的流程示意图。2、基于监听的事件处理图1事件处理示意图2、基于监听的事件处理基于监听的事件处理模型的编程步骤如下:获取普通界面组件(事件源),也就是被监听的对象。实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个XxxListener接口。调用事件源的setXxxListener方法将事件监听器对象注册给普通组件。当事件源上发生指定事件时,Android会触发事件监听器,由事件监听器调用相应的方法(事件处理器)来处理事件。2、基于监听的事件处理2、基于监听的事件处理实例控制飞机移动(codes\03\3.2\plane)通过上面实例不难看出,事件监听器就是实现了特定接口的Java类实例,通常有如下几种实现事件监听器的形式:内部类形式:将事件监听器定义为当前类的内部类(codes\03\3.2\EventQs)外部类形式:将事件监听器定义为一个外部类(codes\03\3.2\SendSms)Activity本身作为事件监听器类:让Activity本身实现监听器接口,并实现事件处理方法(codes\03\3.2\ActivityListener)匿名内部类形式:使用匿名内部类创建事件监听器对象(codes\03\3.2\AnonymousListener)2、基于监听的事件处理Android还有一种更加简单的绑定事件监听器的方式,直接在界面布局文件中为指定标签绑定事件处理方法。对于很多Android界面组件而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx(Viewsource)的方法名。实例直接绑定到标签(codes\03\3.2\bingingTag)2、基于监听的事件处理3、基于回调的事件处理Android基于回调的事件处理,主要做法是重写Android组件特定的回调方法,或者重写Activity的方法。对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说是事件监听器完全消失了。当用户在GUI组件上激发某个事件时,组件自己特定的方法将会负责处理该事件。为了实现回调机制的事件处理,Android为所有GUI组件都提供了一些事件处理的回调方法,以View为例,该类包含如下方法:booleanonKeyDown(intkeyCode,KeyEventevent):当用户在该组件上按下某个按键时触发该方法。booleanonKeyLongPress(intkeyCode,KeyEventevent):当用户在该组件上长按某个按键时触发该方法。3、基于回调的事件处理booleanonKeyShortcut(intkeyCode,KeyEventevent):当一个键盘快捷键事件发生时触发该方法。booleanonKeyUp(intkeyCode,KeyEventevent):当用户在该组件上松开某个按键时触发该方法。booleanonTouchEvent(MotionEventevent):当用户在该组件上触发触摸屏事件时触发该方法。booleanonTrackballEvent(MotionEventevent):当用户在该组件上触发轨迹球屏事件时触发该方法。Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通过重写View中的这些回调方法来实现需要的响应事件。当某个事件没有被任何一个View处理时,便会调用Activity中相应的回调方法。接下来将对各种回调方法进行介绍。3、基于回调的事件处理实例(codes\03\3.3\CallbackHandler)3、基于回调的事件处理3、基于回调的事件处理基于回调的事件传播几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该方法用于标识该处理方法是否能完全处理该事件:如果处理事件的回调方法返回true,表明该处理方法已完全处理该事件,该事件不会传播出去。如果处理事件的回调方法返回false,表明该处理方法并未完全处理该事件,该事件会传播出去。对于基于回调的事件传播而言,某组件上所发生的事情不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调方法—只要事件能传播到该Activity。实例(codes\03\3.3\Propagation)3、基于回调的事件处理3、基于回调的事件处理3、基于回调的事件处理运行结果说明了什么?3、基于回调的事件处理对比Android提供的两种事件处理模型,不难发现基于监听的事件处理模型具有更大的优势:基于监听的事件模型分工更明确,事件源、事件监听器由两个类分开实现,因此具有更好的可维护性。Android的事件处理机制保证基于监听的事件监听器会被优先触发。4、响应的系统设置的事件在开发Android应用时,有时候可能需要让应用程序随系统设置而进行调整,比如判断屏幕方向、判断系统方向的导航设备等。除此之外,有时还需要让应用程序监听系统设置的更改,对系统设置的更改做出响应。Configuration类的简介Configuration类专门用于描述手机设备上的配置信息,该类包含了很多种信息,例如系统字体大小、orientation、输入设备类型等等。程序可调用Activity的如下方法来获取系统的Configuration对象。Configurationcfg=getResources().getConfiguration();Configuration对象提供了以下方法来获取系统的配置信息。4、响应的系统设置的事件publicfloatfontScale:获取当前用户设置的字体的缩放因子。publicintkeyboard:获取当前设备的键盘类型。publicintkeyboardhidden:该属性返回一个boolean值用于标识当前的键盘是否可用。publicLocaldelocale:用户选择的location信息publicintmcc:获取移动信号的国家码publicintmnc:获取移动信号的网络码publicintorientation:获取系统屏幕的方位publicinttouchscreen:获取系统触摸屏的触摸方式。实例获取系统设备状态(codes\03\3.4\ConfigurationTest)4、响应的系统设置的事件4、响应的系统设置的事件4、响应的系统设置的事件如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged方法,该方法是一个基于回调的事件处理方法。当系统设置发生更改时,该方法会被自动触发。为了在程序中动态地更改系统设置,我们可调用Activity的setRequestedOrientation(int)方法来修改屏幕的方向。实例监听系统设置的更改(codes\03\3.4\ChangeCfg)4、响应的系统设置的事件4、响应的系统设置的事件5、Handler消息传递机制在Android平台中,新启动的线程是无法访问Activity里的Widget的,当然也不能将运行状态外送出来,这就需要有Handler机制进行消息的传递了,Handler类位于android.os包下。Handler类的主要作用有两个:在新启动的线程中发送消息。在主线程中获取、处理消息。Handler类的常用方法如下:voidhandleMessage(Messagemsg):子类对象通过该方法接收信息,该方法用于被重写。finalbooleanhasMessages(intwhat):监测消息队列中是否还有what值的消息。5、Handler消息传递机制finalbooleanhasMessages(intwhat,Objectobject):监测消息队列中是否包含对象是object且属性是what值的消息。多个重载的MessageobtainMessage():获取消息。finalbooleansendEmptyMessage(intwhat):发送一个只含有what值的消息。finalbooleansendMessage(Messagemsg):发送消息到Handler,通过handleMessage方法接收。finalbooleansendMessageDelayed(Messagemsg,longdelayMillis):指定多少毫秒之后发送消息。实例Handler使用(codes\03\3.4\HandlerTest)5、Handler消息传递机制5、Handler消息传递机制小结本讲主要介绍了Android的事件处理模型,其中包括回调机制的事件处理及监听接口机制的事件处理,接着介绍了Configuration类,最后介绍了Handler消息的传递机制。通过本章的学习,读者应该对Android平台的事件处理模型有初步的认识,为以后大型应用的开发打好基础。Theend!
本文档为【android应用开发技术2015秋课件03事件处理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
雪中送文
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:33
分类:
上传时间:2022-01-29
浏览量:2