Android事件分发机制
来源:互联网 发布:智慧农业大数据平台 编辑:程序博客网 时间:2024/06/07 03:51
阅读郭林的文章后,记录一下自己学到的知识
当触摸一个View的时候,会调用dispatchTouchEvent方法,该方法中最重要的代码如下
if (li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED && li.mOnTouchListener.onTouch(this, event)) { result = true;}if (!result && onTouchEvent(event)) { result = true;}
通过例子来说明该方法的执行流程:
button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.e("Button", "onTouch execute, action " + event.getAction()); return false; }});button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.e("Button", "onClick execute"); }});
分别给Button设置OnTouchListener和OnClickListener事件,当点击Button时,输出日志如下:
Button: onTouch execute, action 0Button: onTouch execute, action 1Button: onClick execute
由此可见,它首先执行onTouch方法,再执行onClick方法。分析dispatchTouchEvent方法,确实如此。但是注意,当将onTouch方法中返回true时,就不再执行onClick方法,表明该事件已经被消费掉,不再往下传递。
0 0
- android事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android 事件分发机制
- android 事件分发机制
- Android事件分发机制
- android 事件分发机制
- android事件分发机制
- Android 事件分发机制
- android事件分发机制
- android 事件分发机制
- android 事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android事件分发机制
- Android 事件分发机制
- X5 WebKit 的那些坑(持续更新....)
- 观w3cschool 笔记--自己理解的
- linux用户与多个组相关操作
- 用swift实现tableview的展示
- PHP学习总结(2)——PHP入门篇之PHP代码标识
- Android事件分发机制
- Java-001-String和StringBuffer以及StringBuilder
- 数据结构-线性表
- 类的设计
- php7 连接 mysql数据库
- 高效实现Map的原子更新操作(Hystrix的InternMap<K, V>源码解析)
- rtmp complex handshake,支持h264/aac
- 用ajax post array数组到Mvc web Api后台接受不到的问题
- Content Security Policy 入门教程