background image

深入

Android 开发之--Android 事件模型

前言

:

   一般我们处理事件,都是针对某一个 View 来处理了,要么是添加 onTouchListener 监听器,要
么继承

View 然后重写 View#onTouchEvent,

甚至不用重写

,只要使用 Widget 自己的监听函数 ,或者 GestureDetector 就 OK 了.

但是理解

Android 事件模型,对于理解 GestureDetector,及 Android 事件的交互,写出具有出色

的交互的应用

.

都是必经之路

.

:ViewGroup 与 View 的事件模型

 我们都知道 Android 界面实际是一棵 View 的树.枝干是 ViewGroup.

ViewGroup 继承自 View,但是又是管理 View 的容器.那么 ViewGroup 与 View 的事件关系是
怎么样的呢

?

这需要从另一个重要的

ViewGroup 中的方法,如下说起:

?

1
2
3

public

 

boolean

 onInterceptTouchEvent(MotionEvent ev) {

       

return

 

false

;

}

它的默认实现很简单

,就是把事件交给子 View 去处理.自己不拦截.

Intercept 就是拦截的意思.

此方法的注释

,对于 ViewGroup 与 View 的事件模型说得很清楚,

主要是以下几点

:

(1) 如果此方法返回 false,说明此 ViewGroup 暂时(只是暂时)对于触控事件不感兴趣.

 但是不知道后面的事件它感不感兴趣.所以后续事件还会一直传递到此方法中来,供此方法
判断

.

(2) 如果此方法返回 true 了.那么说明此方法对应的 ViewGroup 开始对于此事件(或者手势)