安卓事件分发机制
来源:互联网 发布:fileinput.min.js 编辑:程序博客网 时间:2024/06/05 08:34
详细的不说了,只写一下总结:
view的分发机制
1、事件入口是dispatchTouchEvent(),它会先执行注册的onTouch监听,如果一切顺利的话,接着执行onTouchEvent,在onTouchEvent里会执行onClick监听。
2、无论是dispatchTouchEvent还是onTouchEvent,如果返回true表示这个事件已经被消费、处理了,不再往下传了。在dispathTouchEvent的源码里可以看到,如果onTouchEvent返回了true,那么它也返回true。如果dispatch***在执行onTouch监听的时候,onTouch返回了true,那么它也返回true,这个事件提前被onTouch消费掉了。就不再执行onTouchEvent了,更别说onClick监听了。
3、我们通常在onTouch监听了设置图片一旦被触摸就改变它的背景、透明度之类的,这个onTouch表示事件的时机。而在onClick监听了去具体干某些事。
viewGroup的分发机制
- Android事件分发是先传递到ViewGroup,再由ViewGroup传递到View的。
- 在ViewGroup中可以通过onInterceptTouchEvent方法对事件传递进行拦截,onInterceptTouchEvent方法返回true代表不允许事件继续向子View传递,返回false代表不对事件进行拦截,默认返回false。
- 子View中如果将传递的事件消费掉,ViewGroup中将无法接收到任何事件。
onTouch和onTouchEvent有什么区别,又该如何使用?
这两个方法都是在View的dispatchTouchEvent中调用的,onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行。
另外需要注意的是,onTouch能够得到执行需要两个前提条件,第一mOnTouchListener的值不能为空,第二当前点击的控件必须是enable的。因此如果你有一个控件是非enable的,那么给它注册onTouch事件将永远得不到执行。对于这一类控件,如果我们想要监听它的touch事件,就必须通过在该控件中重写onTouchEvent方法来实现。
参考内容
细说Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 安卓事件分发机制
- 安卓事件分发机制
- 安卓事件分发机制
- 安卓事件分发机制
- 安卓事件分发机制
- 安卓事件分发机制
- 浅尝安卓事件分发机制
- Android:安卓Touch事件分发机制
- 安卓事件分发机制学习笔记
- **安卓事件分发机制学习**
- 浅尝安卓事件分发机制
- 安卓事件分发机制简解
- 安卓的事件分发机制
- 安卓Touch事件的分发机制
- 安卓按键事件分发处理机制
- 浅析安卓事件分发机制源码
- 安卓事件分发机制简解
- 安卓事件分发机制深入浅出
- Android进阶——属性动画Property Animation详解(一)
- mac mysql 5.7.11 安装成功之后忘记密码
- 《剑指Offer》学习笔记——从尾到头打印链表
- hibernate @Temporal
- 11gRAC对单机dataguard
- 安卓事件分发机制
- Android使用GridView实现简单的日历
- SharePoint2013 IT Professional - 如何在SharePoint Site Collection中上传被限制的文档类型?
- Android Studio运行NDK程序,简单的JNI实例
- POJ 3304 Segments [枚举+叉乘判断线段相交]【计算几何】
- linux命令大全
- 在AndroidStudio中引入ZXing扫描二维码的简单实现
- Oracle中的NUMBER、FLOAT
- Mapreduce部署与第三方依赖包管理【hadoop mapreduce第三方jar包maven管理瘦身版本和臃肿版本各取所需】