疯狂android资料:第三章 事件处理.doc
《疯狂android资料:第三章 事件处理.doc》由会员分享,可在线阅读,更多相关《疯狂android资料:第三章 事件处理.doc(7页珍藏版)》请在咨信网上搜索。
1、2013年1月19日0:40:31 第三章 事件处理3.1android的事件处理Android提供了两种方式的事件处理:-基于回调的事件处理-基于监听器的事件处理对应android基于监听的事件处理而已,主要做法就是为android界面组件绑定特定的事件监听器对于android基于回调的事件处理而已,主要做法就是写android组件特定的回调地方法,或者重写Activity的回调方法。Android为绝大部分组件都提供了事件响应的回调方法,开发者只要重写它们即可。一般来说,基于回调的事件处理可用于处理一些具有通用性的事件,基于回调的事件处理代码会显得比较简洁但对于某些特定的事件,无法使用基于
2、回调的事件处理,只能采用基于监听的事件处理。3.2基于监听的事件处理基于监听的事件处理是一种更“面向对象”的事件处理。3.2.1事件监听的处理在事件监听的处理模型中,主要涉及如下三类对象。-Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮、窗口、菜单-Event(事件):事件封装了界面组件上发生的特定事情(通常就是一次用户操作)。如果程序需要获得界面组件上所发生事件的相关信息,一般通过Event对象来获取。-Event Listener(事件监听器):负责监听事件源所发生的事件。并对各种事件做出相应的响应。实例:(3.2.1)基于监听的事件处理模型的编程步骤如下:
3、-获取普通界面组件(事件源),也就是被监听的对象-实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个XXXXListener接口-调用事件源的setXXXListener方法将事件监听器对象注册给普通组件(事件源)上例的程序:可以发现基于监听的事件处理有如下规则。-事件源:就是程序中的按钮。应用程序中任何组件都可以作为事件源。-事件监听器:就是程序中的MyClickListener类。监听器必须由程序员负责实现,实现监听器类的关键就是实现处理器方法。-注册监听器:只要调用事件源的setXXXListener(XXXListener)方法即可。2013年1月20日16:50:323
4、.2.2事件和事件监听器当外部动作在android组件上进行操作时,系统会自动生成事件对象,这个事件对象会作为参数传给注册到事件源上的事件监听器。事件监听器的处理模型涉及三个成员:事件源、事件和事件监听器。其中事件源容易创建,任意界面组件都可以作为事件源;事件的产生无需程序员关心,他是由系统自动产生的,所以,实现事件监听器是整个事件处理的核心。对于键盘事件、触摸屏事件等,程序需要获取事件发生的详细信息:例如键盘事件需要获取是哪个键触发的事件,触摸屏事件需要获取事件发生的位置等,对于这种包含更多信息的事件,android同样会将事件信息封装成XXXEvent对象,并把该对象作为参数传入事件处理器
5、。实例:控制飞机移动(3.2.2)在基于事件监听的处理事件模型中,事件监听器必须实现事件监听器接口,android为不同的界面组件提供了不同的监听器接口,这些接口通常以内部类的形式存在。以View类为例,它包含了如下几个内部接口:-View.OnClickListener:单击事件的事件监听器必须实现的接口-View.OnCreateContextMenuListener:创建上下文菜单事件的事件监听器必须实现的接口-View.onFocusChangeListener:焦点改变事件的事件监听器必须实现的接口-View.onKeyListener:按键事件监听器必须实现的接口-View.onL
6、ongClickListener:长单击事件的事件监听器必须实现的接口-View.onTouchListener:触摸屏事件的事件监听器必须实现的接口所谓事件监听器,其实就是实现了特定接口的Java类的实例。在程序中实现事件监听器,通常有如下几种形式:-内部类形式:将事件监听器类定义成当前类的内部类-外部类形式:将事件监听器类定义成一个外部类-Activity本身作为事件监听器类:让Activity本身实现监听器接口,并实现事件处理方法-匿名内部类形式:使用匿名内部类创建事件监听器对象3.2.3内部类作为事件监听器前面程序中所使用的事件监听器类都是内部类形式,使用内部类可以在当前类中复用该监听
7、器类;因此监听器类是外部类,所以可以自由访问外部类的所以界面组件。这也是内部类的两个优势。3.2.4外部类作为事件监听器类使用顶级类定义事件监听器类的形式比较少见,主要因为如下两个原因:-事件监听器通常属于特定的GUI界面,定义成外部类不利于提高程序的内聚性。-外部类形式的事件监听器不能自由访问创建GUI界面的类中的组件,编程不够简洁但如果某个事件监听器确实需要被多个GUI界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。2013年1月21日13:51:22实例:3.2.3程序定义了一个外部类作为onLongClickListener类,该事件监听器实
8、现了发送短信的功能3.2.5Activity本身作为事件监听器这种形式使用Activity本身作为监听器类,可以直接在Activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:-这种形式可能造成程序结构混乱,Activity的主要职责应该是完成界面初始化工作,但此时还需要包含事件处理器方法,从而引起混乱-如果Activity界面类需要实现监听器接口,让人感觉比较怪异。实例:3.2.43.2.6匿名内部类作为事件监听器类大部分时候,事件处理器都没有什么复用价值,因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适。实际上,这种形式是目前使用最广泛的
9、事件监听器形式。实例:3.2.53.2.7直接绑定到标签Android还有一种更简单的绑定事件监听器的形式,直接在界面布局文件中作为指定标签绑定事件处理方法。对于很多android标签而言,他们都支持如onClick、 onLongClick等属性,这种属性的属性值就是一个形如xxx(View source)的方法的方法名。实例:3.2.63.3基于回调的事件处理3.3.1回调机制与监听机制如果说事件监听机制是一种委托式的事件处理,那么回调机制则恰好与之相反:基于回调的事件处理模式来说,事件源于事件监听器是统一的,或者说事件监听器完全消失了。当用户在GUI组件上激发某个事件时,组件自己特定的方
10、法将会负责处理该事件。为了使用回调机制类处理GUI组件上所发生的事件,我们需要为该组件提供对应的事件处理方法-而Java又是一种静态语言,我们无法为某个对象动态的添加方法,因此只能继承GUI组件类,并重写该类的事件处理方法来实现。为了实现回调机制的事件处理,android为所有的GUI组件都提供了一些事件处理方法,以View为例,该类包含如下方法:-boolean onKeyDown(int keyCode,keyEvent event):当用户在该组件上按下某个按键时触发该方法。-boolean onKeyLongPress(int keyCode,KeyEvent event):当用户在该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 疯狂android资料:第三章 事件处理 疯狂 android 资料 第三 事件 处理
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。