对touch事件传递的简单理解
对View事件传递的理解。看的这篇。
对事件传递有了大致的了解。
onInterceptTouchEvent 函数决定是否将事件拦截,拦截之后,该控件的全部子控件接收不到这个事件。onTouchEvent 函数推断是否消费此事件,在父控件把事件传递到子控件的过程中,假设都没有拦截,那么消息会传递究竟层控件,底层控件能够选择消费或者不消费。假设消费,那么事件到此终止,假设没有消费。则一层一层传递给父类。假设中途被拦截了,那么拦截的那个控件充当上述过程的底层控件。最重要的,在这个过程中,事件所经过的控件,都运行了onTouchEvent 方法,仅仅只是返回值不同确定消费与否而已,比方。父控件onTouchEvent返回值为true,子控件为false,且父控件没有拦截。事件的终点是父控件。可是子控件的onTouchEvent方法是运行了!仅仅只是没有消费。
在touch过程中,仅仅有action_dowm事件消费了。才干消费move和up事件。也好理解,不按下,怎么移动和抬起。
之前在研究下拉刷新控件时,遇到的问题:当下拉区域宽度大于临界值时。这时松开手指则開始刷新,假设这时我想取消,那么仅仅能手指向上滑,使这个宽度小于临界宽度再松手就好了,可是,实际的情况是,这时手指向上滑,ListView也開始滑动了,下拉区域就在屏幕之外了。正确的应当是把ListView禁止滑动,过会再取消禁止。当时的解决的方法是在ListView onTouchEvent()中,推断这一情况,并直接返回true就能够解决。当时的理解非常肤浅。仅仅想返回true就把事件消费了。就完事了。如今想想全然不是那回事,所以又一次看那段代码。下拉刷新控件的简单分析
尝试把ListView中super.onTouchEvent(ev)输出,发现这个值是true,感觉不正确啊,和我想的不同,既然都是返回true。为什么还会有上述的解决的方法。于是猜想super.onTouchEvent(ev)不仅仅单纯返回一个true那么简单,可能还响应和改变ListView的滚动栏,打开AbsListView.java。查看这种方法,果然有非常多非常多代码,这样就能够解释了。直接返回true,从而没有运行AbsListView中默认的onTouchEvent方法,所以滚动栏才没有滚动。
ListView相当于父控件。item是子控件。而item布局里的其它控件就是子子控件,依照功能需求能够通过控制touch事件传递来实现。
对touch事件传递的简单理解的更多相关文章
- Android touch 事件传递机制
前言: (1)在自定义view的时候经常会遇到事件拦截处理,比如在侧滑菜单的时候,我们希望在侧滑菜单里面有listview控件,但是我们希望既能左右滑动又能上下滑动,这个时候就需要对触摸的touch事 ...
- Android Touch事件传递机制全面解析(从WMS到View树)
转眼间近一年没更新博客了,工作一忙起来.非常难有时间来写博客了,因为如今也在从事Android开发相关的工作,因此以后的博文也会很多其它地专注于这一块. 这篇文章准备从源代码层面为大家带来Touch事 ...
- Android Touch事件传递机制通俗讲解
在讲正题之前我们讲一段有关任务传递的小故事,抛砖迎玉下: 话说一家软件公司,来一个任务,分派给了开发经理去完成: 开发经理拿到,看了一下,感觉好简单,于是 开发经理:分派给了开发组长 开发组长:分派给 ...
- 菜鸟进阶Android Touch事件传递(四)
尊重他人劳动成果,转载请说明出处:http://blog.csdn.net/bingospunky/article/details/44343477 在该系列文章第四篇.我准备介绍一下viewpage ...
- Android Touch事件传递机制引发的血案
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38942135 关于Android Touch事件传递机制我之前也写过两篇文章,自觉得对Tou ...
- Android Touch事件传递机制 二:单纯的(伪生命周期)
转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...
- Android Touch事件传递机制 一: OnTouch,OnItemClick(监听器),dispatchTouchEvent(伪生命周期)
ViewGroup View Activity dispatchTouchEvent 有 有 有 onInterceptTouchEvent 有 无 无 onTouchEvent 有 有 有 例 ...
- Android Touch事件传递机制 二:单纯的(伪生命周期) 这个清楚一点
转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...
- Android Touch事件传递机制详解 下
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38025165 资源下载:http://download.csdn.net/detail/yu ...
随机推荐
- shell项目-告警系统
告警系统 1. 告警系统需求分析 需求:使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理. 思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日志等. 主程序:作为整 ...
- 03005_SQL查询语句
查询语句,在开发中使用的次数最多,此处使用“zhangwu” 账务表. 1.准备工作 (1)创建财务表: CREATE TABLE zhangwu ( id INT PRIMARY KEY AUTO_ ...
- 【LeetCode-面试算法经典-Java实现】【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)】
[144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bina ...
- 点击事件-click,longclick
今天在修改一个问题的时候,遇到了click,longclick事件触发情况.记录下来. 代码 tView.setOnLongClickListener(new OnLongClickListener( ...
- theme- 工作原理
首先看一下theme中的设置,代码如下 <?xml version="1.0" encoding="utf-8"?> <resources&g ...
- php中ajax使用实例
php中ajax使用实例 一.总结 1.多复习:这两段代码都挺简单的,就是需要复习,要多看 2.ajax原理:ajax就是部分更新页面,其实还在的html页面监听到事件后,然后传给服务器进行操作,这里 ...
- Android NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件
NineGridLayout 一个仿微信朋友圈和QQ空间的九宫格图片展示自定义控件. GitHub:https://github.com/HMY314/NineGridLayout 一.介绍 1.当只 ...
- POJ 1320 Street Numbers Pell方程
http://poj.org/problem?id=1320 题意很简单,有序列 1,2,3...(a-1),a,(a+1)...b 要使以a为分界的 前缀和 和 后缀和 相等 求a,b 因为序列很 ...
- [Angular] Custom directive Form validator
Create a directive to check no special characters allowed: import {Directive, forwardRef} from '@ang ...
- Dell shareplex 与HVR数据复制软件
今天大体了解了一下Dell shareplex 数据复制软件,网址为:http://software.dell.com/products/shareplex/ 从该网址能够看到. shareplex作 ...