您的位置:首页 > 移动开发 > Android开发

Android View事件分发机制

2014-07-03 23:30 477 查看
每个View的子类都有三个与 TouchEvent 密切相关的方法:

1)分发 TouchEvent 事件:

public boolean dispatchTouchEvent (MotionEvent ev)

2)拦截 TouchEvent 事件:

public boolean onInterceptTouchEvent(MotionEvent ev)

3)处理 TouchEvent 事件:

public booleanonTouchEvent
(MotionEvent ev)

首先在发生一个TouchEvent事件时,Activity 将TouchEvent传递给顶层View,该TouchEvent首先进入到该View的dispatchTouchEvent(MotionEvent ev)

如果返回 true:

交给该View 的 onTouchEvent (MotionEvent ev) 处理

如果返回 false:

交给该View的 onInterceptTouchEvent(MotionEvent ev)来决定是否进行拦截

如果返回 true:

该事件被拦截掉,交给当前View的 onTouchEvent (MotionEvent ev)处理,不再传递给子View

如果返回 false:

将事件传递给 子View,由子View的dispatchTouchEvent (MotionEvent ev)从新开始分发事件

在某一层子View的 onTouchEvent (MotionEvent ev)方法中:

如果返回 true:

该事件被处理掉

如果返回 false:

该事件将往上传到父容器,由父容器的onTouchEvent (MotionEvent ev)来处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: