Android基本功:事件处理

一、事件概述 

  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为例: 

    • boolean onKeyDown(int keyCode,KeyEvent event):在该组件上按下某个键时触发的方法 

    • boolean onKeyLongPress(int keyCode,KeyEvent event):在该组件上长按某个键时触发的方法 

    • boolean onTouchEvent(MotionEvent event):在该组件上触摸屏事件时触发的方法; 

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

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

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

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

你可能感兴趣的:(android,事件,监听,回调,event)