对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 ...
随机推荐
- BZOJ3511: 土地划分(最小割)
Description Y国有N座城市,并且有M条双向公路将这些城市连接起来,并且任意两个城市至少有一条路径可以互达. Y国的国王去世之后,他的两个儿子A和B都想成为新的国王,但他们都想让这个国家更加 ...
- LuoguP2756 飞行员配对方案问题(最大流)
题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外 ...
- python 中文文档地址总结
sqlalchemy: https://www.imooc.com/article/details/id/22343
- 50行python代码实现个代理server(你懂的)
之前遇到一个场景是这种: 我在自己的电脑上须要用mongodb图形client,可是mongodb的server地址没有对外网开放,仅仅能通过先登录主机A,然后再从A连接mongodbserverB. ...
- ZOJ 3674 Search in the Wiki(字典树 + map + vector)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4917 题意:每一个单词都一些tips单词. 先输入n个单词和他们的t ...
- Day4下午解题报告
预计分数:30+30+0=60 实际分数:30+30+10=70 稳有个毛线用,,又拿不出成绩来,, T1 https://www.luogu.org/problem/show?pid=T15626 ...
- 洛谷 P2374 搬运工
P2374 搬运工 题目背景 陈老师喜欢网购书籍,经常一次购它个百八十本,然后拿来倒卖牟取暴利.(ps:描述要看懂) 题目描述 前些天,高一的新同学来了,他便像往常一样兜售他的书,经过一番口舌,同学们 ...
- interpolator-动画执行方式
动画中有一个属性是设置动画执行的方式, <?xml version="1.0" encoding="utf-8"?> <set xmlns:a ...
- transform属性实现翻转效果
transform:perspective(800px) rotateY(180deg);//翻转180度,透视800px; transition-delay: 0.3s;//过程时间 opacity ...
- visual studio code 中 debugger for chrome 插件的配置
安装 debugger for chrome 插件后,把默认的 launch.json 改成: { "name": "谷歌浏览器", "type&qu ...