通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件、选框的状态切换事件。
一、Android事件处理
Android提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理。
-
基于监听的事件处理:主要做法就是为Android界面组件绑定特定的事件监听器,前面小节已经见到大量这种事件处理的示例。
-
基于回调的事件处理:主要做法就是重写Android组件特定的回调方法, 或者重写Activity的回调方法。Android为绝大部分界面组件都提供了事件响应的回调方法,开发者只要重写它们即可。
一般来说,基于回调的事件处理可用于处理一些具有通用性的事件,基于回调的事件处理代码会显得比较简洁。但对于某些特定的事件,无法使用基于回调的事件处理,只能采用基于监听的事件处理。
本期先来学习基于监听的事件处理,后面再学习基于回调的事件处理,关注分享达人秀(ShareExpert)获取第一手教程,也可以加小编微信(jinwenyu2010)拽入Android零基础入门技术讨论微信群共同进步。
二、基于监听的事件处理概述
基于监听的事件处理是一种更“面向对象”的事件处理,在事件监听的处理模型中主要涉及如下三类对象。
-
Event Source (事件源):事件发生的场所,通常就是各个组件,例如按钮、窗口、菜单等。
-
Event (事件):事件封装了界面组件上发生的特定事情(通常就是一次用户操作)。如果程序需要获得界面组件上所发生事件的相关信息,一般通过Event对象来取得。
-
Event Listener (事件监听器):负责监听事件源所发生的事件,并对各种事件做出相应的响应。
当用户按下一个按钮或者单击某个菜单项时,这些动作就会激发一个相应的事件,该事件就会触发事件源上注册的事件监听器(特殊的Java对象),事件监听器调用对应的事件处理器 (事件监听器里的实例方法)来做出相应的响应。
每个组件均可以针对特定的事件指定一个事件监听器,每个事件监听器也可监听一个或多个事件源。因为同一个事件源上可能发生多种事件,委派式事件处理方式可以把事件源上所有可能发生的事件分别授权给不同的事件监听器来处理;同时也可以让一类事件都使用同一个事件监听器来处理。
Android事件处理流程如下图所示:
从上图可以知道,基于监听的事件处理模型的流程如下:
-
为某个事件源(界面组件)设置一个监听器,用于监听用户操作。
-
当用户操作时,会触发事件源的监听器。
-
生成了对应的事件对象。
-
将这个事件源对象作为参数传给事件监听器。
-
事件监听器对事件对象进行判断,执行对应的事件处理器(对应事件的处理方法)。