关于Android事件分发机制的理解
来源:互联网 发布:办公室电脑监控软件 编辑:程序博客网 时间:2024/05/21 17:31
要注意控件的两个属性:ENABLE和CLICKABLE
主要讨论的是Button(默认可点击的控件)和ImageView(默认不可点击的控件),因为在dispatchTouchEvent方法中,先要经过一个判断,其中的主要判断条件是ENABLE和onTouch的返回值
- 如果enable是false,就不会执行onTouch,直接执行onTOuchEvent
- 如果enable=true,onTouch返回的是true,可以理解为触屏事件被onTouch消费掉了,从而不会再去执行onOuchEvent
- enable=true,onTouch返回false,这表示先执行onTouch,然后执行onTouchEvent
而在onTouchEvent的执行中,首先有个重要的判断是CLICKABLE,如果是可点击的控件即CLICKABLE=true,就是进入到判断内部,从而执行ACTION.DOWN,ACTION.UP和ACTION.MOVE等操作,但是如果有一个ACTION,如果返回的是false,下面的ACTION都不会再执行?经过实测,在控件的ouTouch中处理ACTION事件时若返回false,则第一个事件之后的事件都不会执行,如果返回的是true则会执行下面的ACTION。
ViewGroup的事件分发机制,基于View的事件分发机制,主要也是dispatchTouchEvent方法,重要的是需要清楚,事件分发的顺序,是从ViewGroup,传递到子View,再回到ViewGourp的dispatchTouchEvent事件,所以ViewGroup的onTouch事件会在子控件的onClick事件之后执行
其中ViewGroup的dispatchTouchEvent方法中先根据onInterceptTouchEvent的返回值进行判断是否拦截事件分发
- 如果返回是true,即事件分发不会传递到子控件,但ViewGroup的onTouch事件执行,
- 如果返回是false,事件分发不会被拦截,此时会继续执行下面的判断
在下面的判断中,会根据事件发生的区域,判断是否属于某个子控件的布局范围,然后将事件传递给子控件执行其dispatchTouchEvent方法,或者执行ViewGroup的super.dispatchTouchEvent事件,如果子控件将事件消费掉(即返回值为true),super.dispatchTouchEvent也不会再执行。
0 0
- 关于Android事件分发机制的理解
- Android事件分发机制的理解
- Android事件分发机制的理解
- 关于Android 事件分发机制的学习
- 关于android 的事件分发机制
- 关于Android的事件分发机制
- 关于android事件分发机制
- 关于android事件分发机制
- 对于Android的事件分发机制的理解
- 教你彻底理解Android的事件分发机制
- 你真的理解android事件分发机制了吗
- Android事件分发传递机制的领悟和理解
- Android事件分发机制-自己理解以后的阐述
- 理解Android中的TouchEvent事件分发机制
- android 快速理解事件分发机制
- 深入理解Android事件分发机制
- Android中事件分发机制理解
- Android 事件分发机制 理解杂谈
- Android各种蓝牙设备的UUID
- Neutron中的L3 HA特性(by quqi99)
- Redis研究(十二)—主从复制
- mysql 压力测试脚本
- 【Python基础教程】第5章
- 关于Android事件分发机制的理解
- Android 通过 JNI 获取 Wi-Fi 网络接口名
- lsb_release No LSB modules are available
- HDU 1495 非常可乐(BFS+模拟)
- POJ 3126 Prime Path(BFS)
- layout_gravity失效
- Sax解析XML文档
- 探索 ConcurrentHashMap 高并发性的实现机制
- ubuntu安装openssh-server 报依赖错误的解决过程