1. 基于监听的事件处理
对象 | 内容 |
---|---|
EvenSource事件源 | 产生事件的控件即事件发生的源头 |
Event事件 | 封装操作的相关信息 |
EventListener事件监听器 | 监听事件源上的操作、作出响应 |
- 委托式事件处理
基于监听的事件处理模型
- 获得事件源:被监听对象
- 实现事件监听器类、处理方法
- 给事件源注册事件监听器对象
事件监听器的定义
形式 | 解释 | 优点 | 适用于 | 缺点 |
---|---|---|---|---|
内部类形式 | 将事件监听器类定义为当前类的内部类 | 1. 当前类内复用该监听器类 2. 内部类是外部类的成员,自由访问外部类的所有界面控件 |
多个事件源同时注册同一事件监听器 | |
外部类形式 | 将事件监听器类定义为外部类 | 被多个GUI界面共享、完成业务逻辑 | 缺点:不利于提高程序内聚性 、不简洁 |
|
类自身作为事件监听类 | Activity本身实现监听类接口,实现事件处理方法 | 为事件源注册监听器,只需传入当前对象 | Activity职责多:即完成页面初始化工作、又包含事件处理器方法 类中代码过多:不符合高内聚、低耦合原则 |
|
匿名内部类形式 | 匿名内部类创建事件监听器对象 | 事件监听器临时使用一次 |
- 注册
- 事件源:通常为界面控件
- 所有界面控件继承于View类
- View类拥有事件注册方法
- View的子类继承调用方法,实现注册
2. 基于回调的事件处理
- View具有处理特殊时间的回调方法
- 回调机制所对应的方法、调用时机:系统定义
- 回调的事件处理模型:事件监听器消失了;某事件被激发,控件特定方法负责处理
传播
处理方法Boolean返回值,标识该处理方法是否能完全处理该事件
当返回值False:说明事件未被完全处理,该事件会被传播
传播:不仅激发该控件上的回调方法,还会触发该控件所在Activity的回调方法
同一控件即采用监听模式、又采用回调模式、重写Activity对应的回调方法,而且无True返回
- 先触发该控件所绑定的事件监听器
- 接着才触发该控件提供的事件回调方法
- 最后传播到该控件所在的Activity,调用Activity相应的事件回调方法
3. 直接绑定到标签
- 在界面布局文件中为指定标签添加属性绑定事件处理方法
- Activity中定义处理方法:public
- 方法名与标签中属性值一致