现在的位置: 首页 > 综合 > 正文

Android 事件处理模型(二) 基于监听接口的事件处理

2014年01月18日 ⁄ 综合 ⁄ 共 1311字 ⁄ 字号 评论关闭

关于监听接口事件处理模型主要对象为:

 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核心技术


其实其他接口都差不多了,只是触发条件和传递的参数有所不同罢了,机制都是一样的。不过没有找到关于“系统怎么获取事件源和封装事件源,并把该事件传递给相应组件”的资料...这要等以后了

抱歉!评论已关闭.