Android的事件处理机制有两种:监听和回调。
A.基于监听的事件处理
主要涉及三类对象:EventSource(事件源),Event(事件),EventListener(事件监听器)
监听机制处理事件的流程图如下(委派式:Delegation):
简单的代码实现:
1.main.xml中定义了一个Button如下,它将作为事件源组件:
<Button android:id="@+id/botton1".../>
2.为该按钮绑定一个事件监听器,监听器的实现方法有几种形式:
2.1 内部类形式
2.2 外部类形式
2.3 Activity本身作为事件监听器类
2.4 匿名内部类
注意:无论采取哪种实现方式都要实现的事件监听器接口有:
View.OnclickedListener:单击事件的事件监听器必须实现的接口
View.OnCreateContextMenuListener:创建上下文菜单事件……
View.OnFocusChangeListener:焦点改变事件……
View.OnKeyListener:按键事件……
如,采用2.4方式绑定该button1的单击事件的监听器的代码如下在(*Activity.java文件中):
final Button bn= (Button)this.findViewById(R.id.button1);
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
……//处理事件的代码
}
});
此外,还有一种直接绑定到标签的更为简单的绑定事件监听器的方法
在main.xml文件中的button1定义标签里添加如下代码
<Button android:id="@+id/botton1"
android:onClick="clickHandler".../>
在对应该界面的Activity中定义clickHandler(View v)方法,该方法就会负责处理该按钮上的单击事件
B.基于回调的事件处理
回调机制实质就是将事件的处理绑定在组件上,由GUI组件自己处理事件,回调机制需要自定义View来实现,自定义View重写该View的事件处理方法即可。
如MyButton.java继承了Button组件,要实现对按键的事件处理,则重写父类的boolean onKeyDown(int keyCode, KeyEvent event)方法即可,当然在main.xml中的定义也要相应的改变,如下:
<nwpu.daisy.test.myButton ……/>
未完待续