Android的事件处理
3.1 Android提供了两套事件处理机制:基于监听的事件处理、基于回调的事件处理。
3.2 基于监听的事件处理
3.2.1 监听的处理模型 主要涉及三类对象:EventSource、Event、EventListener。
Android的事件处理机制是一种委派式(Delegation)事件处理方式:普通组件将整个事件处理委托给特定的对象(事件监听器),可以把所有可能的事件授权给不同的事件监听器来处理,也可以让一类事件都使用同一个事件监听器来处理。
事件监听类是一个特殊的类,必须实现某Listener接口。
3.2.2 事件和事件监听器 如果事件足够简单、事件里封装的信息有限,那就无需封装事件对象、将事件对象出入事件监听器。但对于键盘事件、触摸屏事件,程序需要获取事件发生的详细信息,Android会把事件信息封装成xxxEvent对象,并传给事件监听器。
(源码\03\3.2\plane) 增加触摸事件:
planeView.setOnTouchListener(new View.OnTouchListener(){
@Override public boolean onTouch (View v, MotionEvent event)
......
说明:planeView所使用的事件监听器类是内部类,使用内部类可以在当前类中复用该监听器类;因为监听器类是外部类的内部类,所以可以*访问外部类的所有界面组件。这也是内部类的两个优势。
3.2.4 外部类作为事件监听器类 这种形式比较少见,因为不利于提高程序的内聚性,不能*访问创建GUI界面的类中的组件。但如果某个监听器确实需要被多个GUI界面所共享,而且主要完成某种业务逻辑的实现,则可以考虑用外部类的形式定义事件监听器类。
(源码\03\3.2\SendSms)