关于监听接口事件处理模型主要对象为:
1. 事件源:发生事件的控件。
2. 事件监听器:由组件实现特定接口,用以监听该组件的事件。
事件处理流程:
A. 事件源对象注册监听
B. 事件发生,系统封装事件并把事件发送给响应的事件源的监听器。(找了半天都没找到系统怎么获取和封装事件源)
C. 系统调用监听器响应处理方法来处理事件。
主要监听接口介绍:
1. OnClickListener
该接口主要负责监听点击事件。在触控模式下,是在某个View上按下并抬起的组合动作,而在键盘模式下,是某个View获得焦点后点击确定键或者按下轨迹球事件。该接口为:
package android.view;
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
/**
* Interface definition for a callback to be invoked when a view is clicked.
*/
public interface OnClickListener {
/**
* Called when a view has been clicked.
* @param v The view that was clicked.
*/
void onClick(View v);
}
}
路径:frameworks/base/core/java/android/view/View.java
实现该接口的方法为:
class TestOnClickListener extends Activity implements OnClickListener {
..........
Button myButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myButton = new ...
myButton.setOnClickListener(this);//注册监听
}
@Override
public void onClick(View v) {//view为监听到的组件
...//自定义事件处理方法,上一次写了回调机制,其实这儿也是一个回调的应用
}
..........
}
2. OnLongClickListener
该接口与之前介绍的OnClickListener接口原理基本相同,只是该接口为View长按事件的捕捉接口,即当长时间按下某个View时触发的事件。
3. OnFocusChangeListener
该接口用来处理控件焦点发生改变的事件。如果注册了该接口,当某个控件失去焦点或者获得焦点时都会触发该接口中的
回调方法(OnFocusChange)。
4. OnKeyListener
是对手机键盘进行监听的接口,通过对某个View注册该监听,当View获得焦点并有键盘事件时,便会触发该接口中的回调方法。
主要参考:吴亚峰的Android核心技术
其实其他接口都差不多了,只是触发条件和传递的参数有所不同罢了,机制都是一样的。不过没有找到关于“系统怎么获取事件源和封装事件源,并把该事件传递给相应组件”的资料...这要等以后了