一、之前分析的滑动冲突,并没有讲述event事件是如何分发到不同的控件

View的滑动冲突

现在分析一下滑动冲突event事件的流向

假设:  我们的一个事件为  点下——>左滑动一次——>松手   这三个为该事件的子事件

点下:

当点击屏幕的时候,点击事件会从Activity层 经过 Window 到 DecoreView,并调用DecoreView的dispatchTouchEvent()方法向下分发。

根据上次的文章,会先分发到HorizonLayout控件中,调用dispatchTouchEvent()方法,根据View的事件分发机制进入到onInterceptTouchEvent()中,根据代码,我们选择不拿到该事件,之后事件会传给下面的ListView,调用子类的onTouchEvent()方法,ListView选择拿到该事件。

滑动一次:

当ListView消耗完成“点下”事件的时候,Android就会发送“滑动一次事件”,步骤同上,调用DecoreView的dispathTouchEvent()方法,然后根据 判断“子类获取到了总事件(因为拿到了ACTION_DOWN事件)” 还是会调用onIntercepTouchEvent(),这时候onInterceptTouchEvent()拿到事件。则调用其onTouchEvent()方法,就代表子类的事件被截取了,则子类就不拿到事件,交给了父类的onTouchEvent()方法,所以这时候父类的onInterceptTouchEvent()也就不会被调用了,直接调用父类的onTouchEvent()方法。

松手:

因为事件被父类的onTouchEvent()截取了,所以最后就是调用父类的onTouchEvent()方法。

滑动冲突的补充——Event的流程走向的更多相关文章

  1. 事件分发机制 事件拦截 滑动冲突 MD

    目录 事件分发机制分析案例 默认行为 试验 0 结论 dispatchTouchEvent 返回 true 试验 1 试验 2 结论 onInterceptTouchEvent 返回 true 试验 ...

  2. Android 滑动冲突处理

    要想解决滑动冲突就必须好好理解 Android 的事件分发机制.不了解 Android 事件分发机制的请先参考资料学习一下. 一般有 2 种方法 1 外部拦截法 这个非常简单,因为事件是从父 view ...

  3. Android View的事件分发机制和滑动冲突解决方案

    这篇文章会先讲Android中View的事件分发机制,然后再介绍Android滑动冲突的形成原因并给出解决方案.因水平有限,讲的不会太过深入,只希望各位看了之后对事件分发机制的流程有个大概的概念,并且 ...

  4. view的滑动冲突解决方案

    一.常见的滑动冲突场景 1.外部滑动方向和内部滑动方向不一致 2.外部滑动方向和内部滑动方向一致 3.上面两种情况的嵌套 二.滑动冲突处理的原则 场景1的处理原则是:当用户左右滑动时,需要让外部的vi ...

  5. android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题

    使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题. 我的问题原型: 这个问题,我相信遇到的人会比较少,我是在 一个 viewPager 中,其中 一个 fragment 中实现了 ...

  6. View的滑动冲突

    一.常见的滑动冲突 场景1:外部滑动和内部滑动不一致 场景2:外部滑动和内部滑动一致 场景3:上面两种情况的嵌套 二.滑动冲突的处理方法 场景一:根据水平滑动还是竖直滑动判断到底由谁来拦截事件. 场景 ...

  7. Android滑动冲突解决

    (1).场景一:外部滑动方向跟内部滑动方向不一致,比如外部左右滑动,内部上下滑动   ViewPager+Fragment配合使用,会有滑动冲突,但是ViewPager内部处理了这种滑动冲突   如果 ...

  8. 一个Demo带你彻底掌握View的滑动冲突

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 近期在又一次学习Android自己定义View这一块的内容.遇到了平时开发中常常碰到的一个棘手问题:View的滑 ...

  9. 浅谈Android View滑动冲突

    引言 上一篇文章我们从源码的角度介绍了View事件分发机制,这一篇文章我们就通过介绍滑动冲突的规则和一个实例来更加深入的学习View的事件分发机制. 1.外部滑动方向和内部滑动方向不一致 考虑这样一种 ...

随机推荐

  1. javascript 执行顺序详解

    JavaScript是一种描述 型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解javaScript 语言的运行机制,或者简 ...

  2. 清除浮动 .clearfix

    子元素的浮动 清除子元素的浮动 .clearfix{zoom:1}/*IE 6-8*/.clearfix:after{content:'\20';display:block;height:0;clea ...

  3. [C++程序设计]返回指针值的函数

    定义指针函数的一般形式为 类型名 *函数名(参数表列); 例如 int *a(int x,int y);

  4. VS2005快捷键

    VS2005快捷键 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显 ...

  5. javacc

    http://www.cnblogs.com/Gavin_Liu/archive/2009/03/07/1405029.html https://javacc.java.net/ http://www ...

  6. [ ArcGIS Server技术版]如何得到本机上的所有的REST服务?

    http://server.arcgisonline.com/ArcGIS/rest/services?f=json得到的字符串 {"currentVersion":10.01,& ...

  7. bzoj1644 [Usaco2007 Oct]Obstacle Course 障碍训练课

    Description 考虑一个 N x N (1 <= N <= 100)的有1个个方格组成的正方形牧场.有些方格是奶牛们不能踏上的,它们被标记为了'x'.例如下图: . . B x . ...

  8. Dynamic Flash Messages

    Dynamic Flash Messages的类似软件 - 其他jQuery插件 - 开源中国社区 Dynamic Flash Messages

  9. ObjectOutputStream 追加写入读取错误

    摘自http://blog.csdn.net/mitkey/article/details/50274543 问题描述: 用类ObjectOutputStream向文件写读对象时,碰到一个问题:新建一 ...

  10. Python的字符串与数字

    Python3.0通过“input”实现读取控制台的输入与用户实现交互.值得注意的是input接受的所有数据都是字符串,即使输入的是数字,依然会被当作字符串来处理.这就会出现一些问题,所以需要进行类型 ...