深入
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 开始对于此事件(或者手势)