一、事件概述

  1. 当用户在程序界面上执行各种操作时,应用程序必须为用户动作提供响应动作,这种响应动作需要通过事件处理来完成。Andorid提供了强大的事件处理机制,包括两套事件处理机制:

    • 基于监听的事件处理:为Android界面组件绑定特定的事件监听器

    • 基于回调的事件处理:重写Android组件特定的回调方法,或者重写Activity的回调方法

注意:Android还允许在界面布局文件中为UI组件的android:onClick属性指定事件的监听方法,开发者需要在Activity定义该事件监听方法,有一个View类型参数,代表单击的组件;

二、基于监听的事件处理

  1. 在事件监听处理模型中,主要涉及如下三类对象

    • Event Sources(事件源):事件发生的场所,指各个组件

    • Event(事件):封装了界面组件上发生的特定事件,一般通过Event对象来取得

    • Event Listener(事件监听器):监听事件源发生的事件,并对各个事件做出相应的响应

  2. 基于事件监听的事件处理模型编程步步骤如下

    1. 获取普通界面组件(事件源),也就是被监听的对象

    2. 实现事件监听器类,该监听器类是一个特殊的Java类,必须事件一个XxxListener接口

    3. 调用事件源的setXxxListener方法将事件监听器对象注册给普通组件(事件源);

  1. 在程序中实现事件监听器,通常有如下方式

    • 内部类形式:将事件监听器类定义成当前类的内部类

    • 外部类形式:将事件监听类定义成一个外部类

      • 通常属于特定的GUI界面,不利于提高程序的内聚性

      • 不能自由访问创建GUI界面的类中的组件,编程不够简洁

    • Activity本身作为事件监听类:让Activity本身实现监听器接口,并实现事件处理方法

      • Activity的主要职能应该是完成界面的初始化工作,造成程序结构混乱

      • Activity实现监听器接口,感觉怪异

    • 匿名内部类:使用匿名内部类创建事件监听器对象

      • 大部分事件监听知识临时使用一次,所以使用匿名内部类更合适

    • 直接绑定到标签:android:onClick属性和xxx(View source)的方法

三、基于回调的事件处理

  1. 对于基于回调的事件处理模型来说,事件源和事件监听器是统一的。为了实现回调机制地事件处理,Android为所有的GUI组件提供了一些事件处理方法,以View为例:

    • booleanonKeyDown(intkeyCode,KeyEventevent):在该组件上按下某个键时触发的方法

    • booleanonKeyLongPress(intkeyCode,KeyEventevent):在该组件上长按某个键时触发的方法

    • booleanonTouchEvent(MotionEventevent):在该组件上触摸屏事件时触发的方法;

  1. 几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用户标识该处理方法是否能完全处理该事件

    • 返回true,已完全处理,不会传播下去

    • 返回false,未完全处理,会传播下去

  2. Android系统最先触发的应该是该按键上绑定的事件监听器(Listener),接着才触发该组件提供的事件回调方法(MyButton),然后还会传播到该组件所在的Activity(Activity)。

更多相关文章

  1. Android中实现Bitmap在自定义View中的放大与拖动
  2. Intent的简介以及属性的详解
  3. 源码分析为什么requestDisallowInterceptTouchEvent(true)能阻止
  4. Android(安卓)React-Native系列之-Native UI Components
  5. EditText组件drawableLeft属性设置的图片和hint设置的文字之间的
  6. Android四大组件之广播接收器(一)
  7. Android(安卓)自定义 弹框日期选择器 弹框,年月日,时分,
  8. android解析xml文件的方式(其二)
  9. Android开源组件

随机推荐

  1. 新书内容连载(3):Android(安卓)SDK中常用命
  2. 深入探讨 Android(安卓)传感器
  3. Android(安卓)的Camera架构介绍
  4. 真正的机器人操作系统---Android
  5. 新书内容连载(3):Android(安卓)SDK中常用命
  6. 新书内容连载(3):Android(安卓)SDK中常用命
  7. Android视频采集
  8. 实例分析android中的Binder通信机制(1)
  9. 【转】不要被虚张声势的 Android(安卓)忽
  10. Android彻底组件化方案实践