Android学习笔记——触摸事件分发
来源:互联网 发布:天庭淘宝城红白txt下载 编辑:程序博客网 时间:2024/05/16 15:30
Android 触摸事件分发机制
Android触摸事件分为三个过程:分发、截获、处理。截获是ViewGroup独有的,可以截断事件的分发过程, 处理是View独有的,所有处理事件都将试图看成一个普通的View(即使它是一个ViewGroup)。
正常分发顺序:
DispatchTouchEvent()——> onInterceptTouchEvent()——> onTouch()——> onTouchEvent()——> onClick();
首先,事件的分发和截获;执行根ViewGroup的dispatchTouchEvent()分发事件,在方法中调用onInterceptTouchEvent判断是否截获,如果截获则返回true表示截断,调用onTouch()或onTouchEvent(),事件不继续下发;返回false则将事件继续下发,调用child(如果有)的dispatchTouchEvent方法下发; 子View的dispatchTouchEvent 返回true说明该子View(含其嵌套的子View)中已经处理了该事件,当前ViewGroup不必继续将该事件分发至Z轴下的重叠子View(默认首先向第一层View下发事件,循环访问 Z—preOrderList(该触摸点对应的Z轴下的重叠子View布局,只正对当前ViewGroup的子重叠层,不包括子View嵌套部分);如果第一层View的dispatchTouchEvent返回false,说明该子View及其嵌套的View没有消耗事件,则继续向下一个Z轴下的重叠View下发事件;如果没有子View处理事件,则该ViewGroup自己将成为一个普通的View处理该事件。
然后,View层的事件消费;如果设置onTouchListener,则触发onTouch事件如果返回true,说明事件已被消费,则不将事件进行分发;如果onTouch()返回false,继续执行onTouchEvent,onTouchEvent返回true,说明事件已被消费;返回false说明事件没有被消费,则该事件会递交给父层View处理。
最后,监听Click事件;Click事件是在onTouchEvent方法中触发,它没有返回值,不能决定事件的消费与否,无法影响事件分发的过程。
分发机制流程图:
触摸事件理解注意
注意几个关键变量:mFirstTouchTarget、newTouchTarget、intercept。他们影响到分发的流程
注意分发的流程:V型分发流程。从外到内分发,然后从内到外冒泡处理;中间增加截获机制。
单点触摸事件:ACTION_DOWN、ACTION_MOVE、ACTION_UP等
多点触摸事件:ACTION_POINTER_DOWN、ACTION_POINTER_UP等
- Android学习笔记——触摸事件分发
- Android 触摸事件分发
- Android触摸事件分发
- Android 触摸事件分发
- Android学习笔记——View事件分发(上)
- Android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- android触摸事件分发机制
- Android 触摸事件分发过程
- android触摸事件分发机制
- Android触摸事件分发机制
- Android触摸事件分发机制
- 1092. To Buy or Not to Buy (20)
- linux wait返回及timer_create问题
- POJ 2001 Shortest Prefixes 数据结构Trie树(字典树、前缀树)
- UITableView在style为plain时,实现sectionHeader跟随cell移动
- Java 8 新特性之 Lambda表达式
- Android学习笔记——触摸事件分发
- 网站优化之如何用原生javascript去完成懒加载技术--lazyload
- POJ-3641 Pseudoprime numbers
- HDU 1052 Tian Ji -- The Horse Racing
- android studio 新建项目 界面一直停在 【“building ‘ 项目名’ gradle project info”】
- Summer day 12
- leetcode_c++:栈:Verify Preorder Serialization of a Binary Tree(331 )
- 初探Python(2)
- 线性表——顺序表