Android事件处理机制

  包括监听和回调两种机制。

  1. 基于监听的事件处理:

  事件监听包含三类对象,事件源,事件,事件监听器。Android的事件处理机制是一种委派式(Delegation)事件处理方式:普通组件(事件源)将整个事件处理委托给指定的对象(事件监听器);当该事件源发生指定的事件时,就通知所委托的事件监听器,由事件监听器来处理这个事件。

  委派式事件处理方式类似于人类社会的分工协作。例如某单位发生火灾,该单位通常不自己处理该事件,而是通知消防局(事件监听器)去处理;发生治安事件,该单位通知公安局(事件监听器)去处理。而消防局、公安局也会同时监听多个单位的事件。这种委派式的事件处理机制将事件源和事件监听器分离,从而提高程序的可维护性。

  编程步骤如下:

A. 获取界面组件,如findViewById;

B. 实现监听器类,Java类,实现一个XxxListener接口;

C. 调用事件源的setXxxListener方法将监听器对象注册给界面组件。

  如果事件发生时,有比较多的信息需要传递给监听器,则需要将信息封装成Event对象。

  Activity本身一般不作为事件监听器,因为Activity的主要职责应该是完成界面初始化工作,如果此时也包含了事件处理器方法,混乱而且怪异。

  大部分事件监听器只使用一次,因为使用匿名内部类形式的事件监听器更合适。

  2. 基于回调的事件处理:

  与事件监听机制不同,基于回调的方法使用的是组件自身的事件处理方法。Android为所有GUI组件都提供了回调方法,如onKeyDown、onKeyLongPress等。

  几乎所有基于回调的事件处理方法都有一个boolean类型的返回值。当事件被触发时,最先触发的是该组件上绑定的事件监听器,然后是该组件提供的事件监听方法,然后是该组件所在的Activity。如果中途遇到返回值为true,则停止传播。

时间: 2024-11-07 06:49:44

Android事件处理机制的相关文章

理解Android事件处理机制

Android的事件处理机制分为两大类:基于监听器和基于回调 1.基于监听器的事件处理 这种处理方式和Java的GUI组件监听器的几乎一样,是一种委托式的处理办法.即如果View组件(事件源)被单击或者长按(事件)后,系统将这个单击事件委托给特定对象(监听器)处理,特定对象可以是Listener对象也可以是组件指定的事件处理方法.这里涉及到三个成员:事件源,事件和监听器.其中监听器是核心,它包含了事件的处理的实现. 下面是一个简单的Button监听器,采用匿名内部类的实现形式.界面布局文件只是线

【Android应用开发技术:应用组件】Android事件处理机制

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 事件处理:不管是桌面应用还是手机应用都需要去响应用户的动作,这种为用户动作提供响应的机制就是事件处理. Android提供了两套事件处理机制,如下所示: 基于监听的事件处理 基于回调的事件处理 一般来说,基于回调的事件处理可用于处理一些通用性的事件,但对于某些特定的事件只能使

android 事件处理机制之requestDisallowInterceptTouchEvent

转: http://blog.csdn.net/chaihuasong/article/details/17499799 当手指触摸到屏幕时,系统就会调用相应View的onTouchEvent,并传入一系列的action.当有多个层级的View时,在父层级允许的情况下,这个action会一直向下传递直到遇到最深层的View.所以touch事件最先调用的是最底层View的onTouchEent,如果View的onTouchEvent接收到某个touch action并作了相应处理,最后有两种返回方

Android事件处理机制,Toast控件

package com.lxt008; import com.lxt008.R; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.Toast; /** *

Android 事件处理全面剖析

篇外话:先来说下今天的日期,今天是2015年02月18日也就是大年三十,大家都在欢欢喜喜的准备过大年,活动也各式各样,搓麻将.打扑克.放烟花.准备看春晚,而我却还在敲代码,我只想说身为程序员的我们,真的屌丝的不能再屌丝了.虽然很屌丝,但我在这里还是要给大家拜个年,祝大家羊年喜气洋洋.写出来的代码少 bug.产品少改需求!当然当大家看到这篇 blog 的时候已经过完了年,因为我写这篇 blog 是在家里,而我家里木有网络,所以还得等到到了工作之地才能放出来,好了,回归正题. Android 事件处

Android基础入门教程——3.2 基于回调的事件处理机制

Android基础入门教程--3.2 基于回调的事件处理机制 标签(空格分隔): Android基础入门教程 本节引言 在3.1中我们对Android中的一个事件处理机制--基于监听的事件处理机制进行了学习,简单的说就是 为我们的事件源(组件)添加一个监听器,然后当用户触发了事件后,交给监听器去处理,根据不同的事件 执行不同的操作;那么基于回调的事件处理机制又是什么样的原理呢?好吧,还有一个问题:你知道 什么是方法回调吗?知道吗?相信很多朋友都是了解,但又说不出来吧!好了,带着这些疑问我们 对a

Android的Touch事件处理机制

Android的Touch事件处理机制比较复杂,特别是在考虑了多点触摸以及事件拦截之后. Android的Touch事件处理分3个层面:Activity层,ViewGroup层,View层. 首先说一下Touch事件处理的几条基本规则. 1.如果在某个层级没有处理ACTION_DOWN事件,那么该层就再也收不到后续的Touch事件了直到下一次ACTION_DOWN事件. 说明:a.某个层级没有处理某个事件指的是它以及它的子View都没有处理该事件. b.这条规则不适用于Activity层(它是顶

Android基础入门教程——3.1 基于监听的事件处理机制

Android基础入门教程--3.1.1 基于监听的事件处理机制 标签(空格分隔): Android基础入门教程 本节引言: 第二章我们学习的是Android的UI控件,我们可以利用这些控件构成一个精美的界面,但是仅仅是界面而已:下一步就要开始学习逻辑与业务实现了,本章节讲解的是Android的事件处理机制!何为事件处理机制?举个 简单的例子,比如点击一个按钮,我们向服务器发送登陆请求!当然,Android中的事件处理机制不止这一种, 比如屏幕发生选择,我们点击了屏幕上某个区域-简单点说,事件处

Android的事件处理机制(一)------基于回调机制的事件处理

Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,现介绍第一种:基于回调机制的事件处理.Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通过重写View中的这些回调方法来实现需要的响应事件.当某个事件没有被任何一个View处理时,便会调用Activity中相应的回调方法.Android提供了以下回调方法供用户使用:1. onKeyDown:   功能:该方法是接口KeyEvent.Callback中的抽象方法,所有的View全部实现了