View事件分发机制伪代码解析
2016-12-20 17:46
375 查看
主要从View,ViewGroup2个方面分析
1.view 角度:
dispatchTouchEvent伪代码如下:
public boolean dispatchTouchEvent(MotionEvent event) {
if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
mOnTouchListener.onTouch(this, event)) { //
return true;
}
return onTouchEvent(event);
}
//需要说明的是:当view 的clickable为true时,dispatchTouchEvent横返回true
ViewGroup 角度:
public boolean dispatchTouchEvent(MotionEvent ev){
boolean handle = false;
if(onInterceptTouchEvent(ev)){//disallowIntercept这个参数也有影响
handle = super.dispatchTouchEvent(ev);
}else{
handle = child.dispatchTouchEvent(ev);//遍历
}
return handle;
}
//灵活运用requestDisallowInterceptTouchEvent方法
//详见:http://blog.csdn.net/guolin_blog/article/details/9153747
1.view 角度:
dispatchTouchEvent伪代码如下:
public boolean dispatchTouchEvent(MotionEvent event) {
if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
mOnTouchListener.onTouch(this, event)) { //
return true;
}
return onTouchEvent(event);
}
//需要说明的是:当view 的clickable为true时,dispatchTouchEvent横返回true
ViewGroup 角度:
public boolean dispatchTouchEvent(MotionEvent ev){
boolean handle = false;
if(onInterceptTouchEvent(ev)){//disallowIntercept这个参数也有影响
handle = super.dispatchTouchEvent(ev);
}else{
handle = child.dispatchTouchEvent(ev);//遍历
}
return handle;
}
//灵活运用requestDisallowInterceptTouchEvent方法
//详见:http://blog.csdn.net/guolin_blog/article/details/9153747
相关文章推荐
- c++ 各个类型之间转化实例
- python开发之环境搭建(eclipse4.6+python3.3.2+pydev3.9.0)
- C#在服务器上调试程序的方法(生成日志文件在服务器中)
- 2、facebook PHP版 SDK 身份验证和授权登录
- c++ overloaded重载
- Java注解全解析(一)——注解简介
- 【DVB】DSM-CC OC搜索、解析和接收流程
- ubuntu14.04中开始Python NLP之旅(一)
- 《JAVA与模式》之简单工厂模式
- TensorFlow 教程 - MNIST机器学习入门完整代码
- spring boot +spring stateMachine启蒙程序
- eclipse中jetty启动超时了办
- eclipse svn 文件冲突问题
- Shiro和Spring结合对请求路径进行过滤和记住我过滤操作
- Python——greenlet
- QT常见数据类型操作
- struts2标签ifelse判断条件的使用
- SpringMVC中使用Interceptor拦截器
- Python文本替换(剔除、截取、添加字符串)
- 【DVB】【DSMCC】如何从TS流中找到OC数据