android事件分发机制知识点
来源:互联网 发布:阿里云控制台中文乱码 编辑:程序博客网 时间:2024/06/05 18:16
1.事件分发机制涉及到三个方法:
1).public boolean onInterceptTouchEvent(MotionEvent ev);
2).public boolean dispatchTouchEvent(MotionEvent ev);
3).public boolean onTouchEvent(MotionEvent event);
2.ViewGroup拥有上述三个方法,View中没有onInterceptTouchEvent()方法;
3.事件传递主要是在ViewGroup与View之间;
4.dispatchTouchEvent()方法(viewgroup):
1:如果是返回true或者false 都不会继续往下层分发,如果返回false 则调用上层的onTouchEvent()方法(如果是Activity的ViewGroup 则 事件被系统消费);如果返回true,则表明事件已经被消费(ps:如果你想让你的activity里面的空间都不具备消费事件的能力,直接再Activity的dispatchTouchEvent()方法返回true);
2:如果返回的是默认的super.dispatchTouchEvent()则继续往下层分发;
5.如果最终都没有view消费事件,则事件会在Activity中被消费;
6.view的onClickListener的优先级低于onTouchListener:
public boolean dispatchTouchEvent(MotionEvent event) {
if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
mOnTouchListener.onTouch(this, event)) {
return true;
}
return onTouchEvent(event);
}
onClickListener是在onTouchEvent方法中的,所以验证了第6条;
7.一般情况下,ViewGroup或者View消费了事件(比如ACTION_DOWN),那么后续的事件(ACTION_MOVE或ACTION_UP)也将交由它处理;
8.子View如果消费了事件,那么ViewGroup将不会收到下层传来的事件;
如有错误,请指正。
最后附上一张图(copy过来的):
- android事件分发机制知识点
- android事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android 事件分发机制
- android 事件分发机制
- Android事件分发机制
- android 事件分发机制
- android事件分发机制
- Android 事件分发机制
- android事件分发机制
- android 事件分发机制
- android 事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android事件分发机制
- 设计模式_状态设计模式
- PowerDesigner15 逆向工程(Oracle数据库)
- PAT乙级练习题B1053. 住房空置率
- caffe 网络画图显示网站
- Android动画完全解析--View动画
- android事件分发机制知识点
- 进程与线程一个简单的理解
- C语言入门(二十三)位操作
- JS微信支付功能实现总结
- 部署不同版本Tomcat引发的jstl java.lang.NoClassDefFoundError javaxelValueExpression问题
- 1043. Is It a Binary Search Tree (25)
- Python基础:格式化字符与转义字符
- gcc #pragma pack c++模板template
- linker command faild with exit code