android 事件传递机制
有三个方法:
dispatchTouchEvent
onInterceptTouchEvent
onTouchEvent
首先:A的dispatchTouchEvent-A的onInterceptTouchEvent
B的dispatchTouchEvent B的onInterceptTouchEvent 。。。
之后呢,如果不在传递了,那么就最后一个元素的onTouchEvent
往上传递,B的onTouchEvent –A的onTouchEvent
中间各个方法返回值不同,传递过程就会中断。总结如下:
dispatchTouchEvent
不管是返回true, 还是false,都不会再走 自己的onInterceptTouchEvent onTouchEvent ,也不会向下传递
只有返回super…..才可以继续 onInterceptTouchEvent onTouchEvent
然后往下传递
如果返回true ,那么以后的事件都由dispatchTouchEvent 处理,不会再交给onTouchEvent
如果返回false,那么以后的事件都由dispatchTouchEvent 处理,不会再交给上层 onTouchEvent ,不管上层返回true或false,都要它处理。
onInterceptTouchEvent
就是配合dispatchTouchEvent 的,不想向下分发就拦截掉,直接执行自己的onTouchEvent
返回true 则接执行自己的onTouchEvent 不想向下分发
返回false 和返回super…..一样
onTouchEvent
返回true 表示当前这个控件自己处理touch时间,包括以后的move ,up ,传递过程中,如果上一级有其他的onTouchEvent ,那么其他的只执行一次,以后直接分发到这一级之后直接调用onTouchEvent.
返回 false 和返回super 一样 ,自己不处理
这个事情我算是搞明白了,看了无数篇文章,最后搞明白还是自己动手写的demo,很简单的demo,以后知道了,想要获取一些真理,还是要动手实践来的正确。自己动手印象深刻。
以后这种事情,就自己动手去打断点,打log,去看。追求真理,追求知识,不要偷懒,不要嫌麻烦。
android 事件传递机制的更多相关文章
- Android事件传递机制(转)
Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都 ...
- Android事件传递机制详解及最新源码分析——ViewGroup篇
版权声明:本文出自汪磊的博客,转载请务必注明出处. 在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴 ...
- Android事件传递机制详解及最新源码分析——View篇
摘要: 版权声明:本文出自汪磊的博客,转载请务必注明出处. 对于安卓事件传递机制相信绝大部分开发者都听说过或者了解过,也是面试中最常问的问题之一.但是真正能从源码角度理解具体事件传递流程的相信并不多, ...
- Android事件传递机制详解及最新源码分析——Activity篇
版权声明:本文出自汪磊的博客,转载请务必注明出处. 在前两篇我们共同探讨了事件传递机制<View篇>与<ViewGroup篇>,我们知道View触摸事件是ViewGroup传递 ...
- Android事件传递机制总结
Android中控件的分类 Activity dispatchTouchEvent(MotionEvent e) onTouchEvent(MotionEvent e) ViewGroup(View) ...
- Android事件传递机制
http://blog.csdn.net/awangyunke/article/details/22047987 1)public boolean dispatchTouchEvent(MotionE ...
- android事件传递机制以及onInterceptTouchEvent()和onTouchEvent()总结
老实说,这两个小东东实在是太麻烦了,很不好懂,我自己那api文档都头晕,在网上找到很多资料,才知道是怎么回事,这里总结一下,记住这个原则就会很清楚了: 1.onInterceptTouchEvent( ...
- android事件传递机制以及onInterceptTouchEvent()和onTouchEvent()详解二之小秘与领导的故事
总结的不是很好,自己也有点看不懂,正好现在用到了,研究了一个,再次总结,方便大家查看 总则: 1.onInterceptTouchEvent中有个Intercept,这是什么意思呢?她叫拦截,你大概知 ...
- android 事件传递机制(1)
在项目中,经常遇到事件冲突,ScrollView,ViewPager滑动卡顿等情况,比如:onClick和onLongClick事件冲突,dispatchTouchEvent,onInterceptT ...
随机推荐
- Prestashop-1.6.1.6-zh_CN (Openlogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: prestashop1.6.1.6 commercial content management ecommerce open-source 简体中文 ...
- Java Map应用
一.基本API使用方法 直接上代码,注释讲解 package com.map; import java.util.HashMap; import java.util.Iterator; import ...
- mysql自增ID
InnoDB引擎的表,执行清空操作之后,表的auto_increment值不会受到影响:一旦重启MySQL,auto_increment值将变成1. MyISAM引擎的表,执行清空操作之后,表的aut ...
- mysqli:查询数据库中,是否存在数据的三种校验方法
在我们编辑用户登录功能的时候,常常需要对用户输入的信息进行校验,校验的方法就是通过SQL语句进行一个比对,那么我们就需要用到以下三种中的一种进行校验啦 1.使用mysqli_num_rows()校验 ...
- ring0 暴力枚举进程
原理:遍历进程ID,然后openprocess,能打开的都枚举出来 ring0 : #include "EnumProcessByForce.h" extern char* PsG ...
- 1929. Teddybears are not for Everyone (Timus) (combination+reading questions)
http://acm.timus.ru/problem.aspx?space=1&num=1929 combination problems. 排列组合问题. According to the ...
- IOS tableView的基本使用
tableView Style:Plain(头部标题 向上移 不会消失) tableView Style:Grouped(头部标题 向上移 会 消失) #import "ViewCont ...
- Docker中的三个基本概念容器(container)、镜像(image)和仓库(registry)之间有什么关系?
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等).镜像不包含任何动态数据,其内容在构建之 ...
- 【转】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
转载自:http://m.blog.csdn.net/blog/lihongli528628/45483463 [git 删除本地分支] git branch -D br [git 删除远程分支] g ...
- 字符串缓冲区StringBuffer类,正则表达式
StringBuffer类 StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容.它是一个容器,容器中可以装很多字符串. ...