android ViewGroup事件分发机制

时间:2023-01-03 17:25:04

  1:事件分销过程

  自定义一个LinearLayout,重写dispatchTouchEvent onInterceptTouchEvent onTouchEvent,定义一个按键重写dispathcTouchEvent setOnClickTouchEvent(会重写onTouchListener接口) onTouchEvent。

正常的事件分销途径是:ViewGroup先捕捉到事件,然后通过以下路径分销事件

DOWN事件:dispathcTouchEvent -> onIntercepterTouchEvent(不拦截子view事件) -> (view)dispatchTouchEvent -> setOnClickTouchEvent -> (view)OnTouchEvent

UP事件:(ViewGroup) dispathTouchEvent -> onInterceptTouchEvent -> dispathcTouchEvent -> setOnClickTouchEvent ->(view)OnTouchEvent

当按下按键如果移动会触发MOVE事件

当view完整捕捉到down up事件之后会触发SetOnClickListener接口。这就是点击事件。当ViewGroup捕捉到事件之后首先会触发dispatchTouchEvent 然后会判断是否拦截。

  2:拦截

  DOWN事件发生后,ViewGroup在onInterceptTouchEvent如果返回true(默认是false)那么View的MOVE UP都不会发生,事件分发的路径是:

(ViewGroup)dispatchTouchEvent -> onIterceptTouchEvent -> (ViewGroup)OnTouchEvent,事件最终被ViewGroup消费了。子View并没有捕捉任何事件。

3:反拦截

在View的dispathTouchEvent 中用getParent().requestDisallowInterceptTouchEvent(true)。

  4:结论

1、如果ViewGroup找到处理事件的View,ViewGroup自己的onTouchEvent()不会被触发

2、通过onInterceptTouchEvent来拦截事件,子View通过getParent().requestDisalloInterceptTouchEvent(true)来阻止队MOVE UP事件的拦截。

备注:

requestDisallowInterceptEvent(true)失效

http://www.cnblogs.com/bhlsheji/p/5307724.html

android ViewGroup事件分发机制的更多相关文章

  1. Android View 事件分发机制 源码解析 (上)

    一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~ 首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个My ...

  2. Android之事件分发机制

    本文主要包括以下内容 view的事件分发 viewGroup的事件分发 首先来看两张图 在执行touch事件时 首先执行dispatchTouchEvent方法,执行事件分发. 再执行onInterc ...

  3. android view事件分发机制

    首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个MyButton继承Button,然后把跟事件传播有关的方法进行复写,然后添加上日志 ...

  4. Android View 事件分发机制 源代码解析 (上)

    一直想写事件分发机制的文章,无论咋样,也得自己研究下事件分发的源代码.写出心得~ 首先我们先写个简单的样例来測试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个M ...

  5. android的事件分发机制理解

    android的事件分发机制理解 1.事件触发主要涉及到哪些层面的哪些函数(个人理解的顺序,可能在某一层会一次回调其它函数) activity中的dispatchTouchEvent .layout中 ...

  6. Android View框架总结(八)ViewGroup事件分发机制

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上 ...

  7. Android Touch事件分发机制学习

    Android  事件分发机制 ViewGroup dispatchTouchEvent 返回true dispatchTouchEvent: Activity ACTION_DOWN Myrelat ...

  8. Android View 事件分发机制详解

    想必很多android开发者都遇到过手势冲突的情况,我们一般都是通过内部拦截和外部拦截法解决此类问题.要想搞明白原理就必须了解View的分发机制.在此之前我们先来了解一下以下三个非常重要的方法: di ...

  9. 浅谈Android View事件分发机制

    引言 前面的文章介绍了View的基础知识和View的滑动,今天我们来介绍View的另一个核心知识,View的事件分发机制. 点击事件的传递规则 所谓的点击事件的分发机制,其实就是对MotionEven ...

随机推荐

  1. [原创]Java中的字符串比较,按照使用习惯进行比较

    java中的字符串比较一般可以采用compareTo函数,如果a.compareTo(b)返回的是小于0的数,那么说明a的unicode编码值小于b的unicode编码值. 但是很多情况下,我们开发一 ...

  2. background的属性和背景图片定位的实例

    本文内容: 1.背景图片定位示例 2.background常用的属性值 3.background-repeat新增的round.space属性 4.background-size的属性值(着重介绍co ...

  3. HTML笔记1

    HTML和css技术 HTML和css技术 html的介绍 网页的基本结构 今天学习的标签 标签属性 浏览器 DW快捷键 相对路径和绝对路径 HTML当中的颜色模式 网页当中常用的图片格式 html的 ...

  4. 电脑bios到底是什么?

    没有哪个玩电脑的人不知道电脑bios,但是真正能明白bios是什么的?身边却没几个,甚至大多数电脑维修站的人员对bios也不够详细了解.一般人不去关心bios是因为它离我们的电脑真正使用仍有一段距离. ...

  5. 每位iOS开发人员不容错过的10大实用工具

    内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...

  6. Python 动态导入模块

    动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │   └── aa.py ├── test1.py lib目录下 ...

  7. axios遇到的坑

    axios 可以使用一个config.js 配置文件来管理它的请求信息.具体配置不细说,使用如下.   一,使用配置方式 GET方法: let promise = axios.get(url, con ...

  8. Oracle连接字符串大全

    // 在 C# 代码中用以下数据库提供程序访问 Oracle 数据库 // Oracle Data Provider for .NET / ODP.NET 使用 TNS 写法 Data Source= ...

  9. Eclipse color theme jsp javascript显示问题

    Q: 在eclipse 中,设置为sublime格式时, 在编辑器中,jsp中嵌套的javascript底色非常难看. A:在如下位置进行设置,Window -> Preferences-&gt ...

  10. Spring - 几种RPC模型的使用与比较

    Spring中,用JMS搞RPC时会用到: org.springframework.jms.remoting.JmsInvokerServiceExporter org.springframework ...