Andriod事件处理教学材料

上传人:yuzo****123 文档编号:141582190 上传时间:2020-08-10 格式:PPT 页数:31 大小:2.91MB
返回 下载 相关 举报
Andriod事件处理教学材料_第1页
第1页 / 共31页
Andriod事件处理教学材料_第2页
第2页 / 共31页
Andriod事件处理教学材料_第3页
第3页 / 共31页
Andriod事件处理教学材料_第4页
第4页 / 共31页
Andriod事件处理教学材料_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Andriod事件处理教学材料》由会员分享,可在线阅读,更多相关《Andriod事件处理教学材料(31页珍藏版)》请在金锄头文库上搜索。

1、Android事件处理,纲要,Android的事件处理概述 基于监听的事件处理 基于回调的事件处理 响应的系统设置的事件 Handler消息传递机制 小结,1、Android的事件处理概述,不管是桌面应用还是手机应用程序,面对最多的就是用户,经常需要处理的就是用户动作也就是需要为用户的动作提供响应,这种为用户动作提供响应的机制就是事件处理 。 Android提供了强大的事件处理机制,包括两套事件处理机制: 基于监听的事件处理 基于回调的事件处理,2、基于监听的事件处理,Android的事件处理机制是一种委派式事件处理方式:普通组件(事件源)将整个事件处理委托给特定的对象(事件监听器);当该事件

2、源发生指定的事件时,就通知委托的事件监听器,由事件监听器来处理这个事件。 每个组件均可以针对特定的事件指定一个事件监听器,每个事件监听器也可监听一个或多个事件源。同时也可以让一类事件使用同一个事件监听器来处理。 接下来,看一下事件处理的流程示意图。,2、基于监听的事件处理,图6-1 事件处理示意图,2、基于监听的事件处理,基于监听的事件处理模型的编程步骤如下: 获取普通界面组件(事件源),也就是被监听的对象。 实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个XxxListener接口。 调用事件源的setXxxListener方法将事件监听器对象注册给普通组件。 当事件源上发生

3、指定事件时,Android会触发事件监听器,由事件监听器调用相应的方法(事件处理器)来处理事件。 实例6.1 外部类作为事件监听器(P152),不推荐此种监听方法。 实例6.2 匿名内部类作为事件监听器(P154),2、基于监听的事件处理,2、基于监听的事件处理,Android还有一种更加简单的绑定事件监听器的方式,直接在界面布局文件中为指定标签绑定事件处理方法。 对于很多Android界面组件而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx(View source)的方法名。 实例6.3 直接绑定到标签(P155)。,2、基于监听的事件处理,

4、3、基于回调的事件处理,Android基于回调的事件处理,主要做法是重写Android组件特定的回调方法,或者重写Activity的方法。 对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说是事件监听器完全消失了。当用户在GUI组件上激发某个事件时,组件自己特定的方法将会负责处理该事件。 为了实现回调机制的事件处理,Android为所有GUI组件都提供了一些事件处理的回调方法,以View为例,该类包含如下方法: boolean onKeyDown(int keyCode ,KeyEvent event):当用户在该组件上按下某个按键时触发该方法。 boolean onKeyLo

5、ngPress(int keyCode, KeyEvent event):当用户在该组件上长按某个按键时触发该方法。,3、基于回调的事件处理,boolean onKeyShortcut(int keyCode, KeyEvent event):当一个键盘快捷键事件发生时触发该方法。 boolean onKeyUp(int keyCode, KeyEvent event):当用户在该组件上松开某个按键时触发该方法。 boolean onTouchEvent(MotionEvent event):当用户在该组件上触发触摸屏事件时触发该方法。 boolean onTrackballEvent(Mot

6、ionEvent event):当用户在该组件上触发轨迹球屏事件时触发该方法。 Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通过重写View中的这些回调方法来实现需要的响应事件。当某个事件没有被任何一个View处理时,便会调用Activity中相应的回调方法。接下来将对各种回调方法进行介绍。,3、基于回调的事件处理,实例6.4 自定义的View(P159)。,3、基于回调的事件处理,3、基于回调的事件处理,基于回调的事件传播 几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该方法用于标识该处理方法是否能完全处理该事件: 如果处理事件的回调方法返

7、回true,表明该处理方法已完全处理该事件,该事件不会传播出去。 如果处理事件的回调方法返回false,表明该处理方法并未完全处理该事件,该事件会传播出去。 对于基于回调的事件传播而言,某组件上所发生的事情不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调方法只要事件能传播到该Activity。 实例6.5 基于回调的事件传播(P158)。,3、基于回调的事件处理,3、基于回调的事件处理,3、基于回调的事件处理,运行结果说明了什么?,3、基于回调的事件处理,对比Android提供的两种事件处理模型,不难发现基于监听的事件处理模型具有更大的优势: 基于监听的事件模型分工更明确,

8、事件源、事件监听器由两个类分开实现,因此具有更好的可维护性。 Android的事件处理机制保证基于监听的事件监听器会被优先触发。,4、响应的系统设置的事件,在开发Android应用时,有时候可能需要让应用程序随系统设置而进行调整,比如判断屏幕方向、判断系统方向的方向导航设备等。除此之外,有时还需要让应用程序监听系统设置的更改,对系统设置的更改做出响应。 Configuration类的简介 Configuration类专门用于描述手机设备上的配置信息,该类包含了很多种信息,例如系统字体大小,orientation 输入设备类型等等。 程序可调用Activity的如下方法来获取系统的Configu

9、ration对象。 Configuration cfg=getResources().getConfiguration(); Configuration对象提供了以下方法来获取系统的配置信息。,4、响应的系统设置的事件,public float fontScale: 获取当前用户设置的字体的缩放因子。 public int keyboard: 获取当前设备的键盘类型。 public int keyboardhidden:该属性返回一个boolean值用于标识当前的键盘是否可用。 public Localde locale :用户选择的location信息 public int mcc:获取移动

10、信号的国家码 public int mnc:获取移动信号的网络码 public int orientation: 获取系统屏幕的方位 public int touchscreen: 获取系统触摸屏的触摸方式。 以上方法的详细信息请参阅教材P162 。 实例6.6 获取系统设备状态 (P163)。,4、响应的系统设置的事件,4、响应的系统设置的事件,4、响应的系统设置的事件,如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged方法,该方法是一个基于回调的事件处理方法。当系统设置发生更改时,该方法会被自动触发。 为了在程序中动态地更改系统设置

11、,我们可调用Activity的setRequestedOrientation(int)方法来修改屏幕的方向。 实例6.7 监听系统设置的更改(P164)。,4、响应的系统设置的事件,4、响应的系统设置的事件,5、Handler消息传递机制,在Android平台中,新启动的线程是无法访问Activity里的Widget的,当然也不能将运行状态外送出来,这就需要有Handler机制进行消息的传递了,Handler类位于android.os包下。 Handler类的主要作用有两个: 在新启动的线程中发送消息。 在主纯种中获取、处理消息。 Handler类的常用方法如下: void handleMes

12、sage (Message msg) :子类对象通过该方法接收信息,该方法用于被重写。 final boolean hasMessages (int what) :监测消息队列中是否还有what值的消息。,5、Handler消息传递机制,final boolean hasMessages (int what,Object object) :监测消息队列中是否包含对象是object且属性是what值的消息。 多个重载的Message obtainMessage():获取消息。 final boolean sendEmptyMessage (int what) :发送一个只含有what值的消息。

13、final boolean sendMessage (Message msg) :发送消息到Handler,通过handleMessage方法接收。 final boolean sendMessageDelayed (Message msg,long delayMillis) :指定多少毫秒之后发送消息。 实例 6.8 Handler使用(P167)。,5、Handler消息传递机制,5、Handler消息传递机制,小结,本讲主要介绍了Android的事件处理模型,其中包括回调机制的事件处理及监听接口机制的事件处理,接着介绍了Configuration类,最后介绍了Handler消息的传递机制。 通过本章的学习,读者应该对Android平台的事件处理模型有初步的认识,为以后大型应用的开发打好基础。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号