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

Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()

2017-12-19 11:36 447 查看
先感谢这两位大哥:Android群英传和http://blog.csdn.net/xyz_lmn/article/details/12517911

首先说这三个方法

ViewGroup有dispatchTouchEvent、onIterceptTouchEvent、onTouchEvent三个方法

单纯的View有dispatchTouchEvent、onTouchEvent两个方法

举个例子;

MyViewGroupA-->MyViewGroupB-->MyView这种层级关系下,一次触摸事件。



几个重点:

1.先dispatch,再OnIntercept决定是否拦截,返回false不拦截则继续往下传递

2.这三个方法默认返回都为false。

3.onIntercept返回false表示不拦截---true表示拦截

4.onTouchEvent返回false表示这个事件没有被消费(接收不到接下来的ACTION_MOVE-ACTION_UP事件了)

5.dispatch的返回依赖于这个事件是否被处理了。(如果他下面的View消费了这个事件,返回true表示事件分发成功)。

6.看网上博客很多说修改dispatch的返回值有表示什么什么什么---如下图。不要去改这个返回值!事件处理这一块修改onIntercept就行了。



如果disPatch返回false表示他下面的子view没有消费这个事件就对了。去改这个方法的返回值容易把人绕晕而且毫无意义。

正确的讲解如下:

感谢这位大哥http://www.jianshu.com/p/24901c309cf4



如果要了解ontouchEvent,ontouchListener,onclickListener的执行顺序看下一篇播控
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android事件分发
相关文章推荐