一、基于监听的事件处理
在事件监听的处理模型中,主要涉及如下三类对象:
1.Event Source(事件源):事件发生的场所,通常就是各个组件、例如按钮、窗口、菜单等。
2.Event(事件):事件封装了界面组件上发生的特定事情(通常就是一次用户操作)。
3.Event Listener(事件监听器):扶着监听事件源所发生的事件,并对各种事件做出相应的响应。
事件处理流程示意图如下:
/**
* 模拟基本View
*
* @author peter_wang
* @create-time 2014-5-19 下午5:03:55
*/
public class View {
private OnClickListener mOnClickListener;
/**
* 模拟点击事件
*/
public void clickEvent() {
if (mOnClickListener != null) {
mOnClickListener.onClick(this);
}
}
public void setOnClickListener(OnClickListener onClickListener) {
this.mOnClickListener = onClickListener;
}
/**
* 点击事件接口
*
* @author peter_wang
* @create-time 2014-5-19 下午5:05:45
*/
public interface OnClickListener {
public void onClick(View v);
}
}
/**
* 模拟按钮
*
* @author peter_wang
* @create-time 2014-5-19 下午5:17:57
*/
public class Button
extends View {
}
/**
* 模拟基本Activity类
*
* @author peter_wang
* @create-time 2014-5-19 下午5:20:38
*/
public class Activity {
public static void main(String[] args) {
Activity activity = new Activity();
activity.onCreate();
}
/**
* 模拟OnCreate方法
*/
protected void onCreate() {
}
}
/**
* 委托模拟页面
*
* @author peter_wang
* @create-time 2014-5-19 下午5:19:22
*/
public class DelegationActivity
extends Activity
implements OnClickListener {
private Button mButton;
@Override
protected void onCreate() {
super.onCreate();
mButton = new Button();
mButton.setOnClickListener(this);
// 模拟点击事件
mButton.clickEvent();
}
@Override
public void onClick(View v) {
if (v == mButton) {
System.out.println("onClick() is callback!");
}
}
}