Android事件处理机制有两套:
基于监听的事件处理
基于回调的事件处理
先说一下事件处理的过程,事件处理主要涉及三个主要部分,事件源、事件、事件监听器,下面画个图解释一下他们之间的关系和事件处理的过程:
下面说说基于监听的事件处理
熟悉swing的都知道,这很简单,就是为事件源注册监听者,然后实现监听者接口就哦了
实现监听者有四种方法,下面分别说说四种方法的利弊:
一、外部类实现监听者
利:
基本没有
弊:
1、事件监听器通常属于特定的GUI界面,不利于程序的内聚性
2、外部类监听器不能随意访问GUI界面类中的组件,编程不够简洁
二、内部类实现监听者
利:
1、可以在当前类中复用该类
2、给类可以随意访问外部类中的组件
弊:
基本没有
三、匿名内部类实现监听者
利:
大部分时候事件处理器没有复用价值,匿名内部类正好
弊:
语法有点难度
四、Activity本身作为监听者
利:
基本没有
弊:
1、Activity本身应只负责界面类的初始化,不要多管闲事,违反单一功能原则
2、看着就乱
再说说基于回调的事件处理
实现方法:要通过自定义View来实现,在自定义View中重写该View的事件处理方法即可
例如:自定义MyButton继承自Button,覆盖onKeyDown方法,然后使用MyButton时发生keyDown事件就会调用此方法
好处:可以使内聚性更强
另外,Android中还可以在xml文件中以标签的形式绑定组件相应的事件处理函数
例如:
一个按钮
在相应的Activity中定义clickEvent函数即可
好处:方便简洁