Android中一种简单的滑动冲突解决方案
来源:互联网 发布:酷家乐装修设计软件 编辑:程序博客网 时间:2024/05/22 05:25
在Android开发中会因为不同的需求经常用到自定义的控件。但是对于各种不同的控件都需要做特定出路,比如我们会遇到具备滑动功能的控件相互嵌套。那么这个时候就要解决滑动重突。
首先来了解一下View的滑动时间分发的机制。在Android系统中View的分发会有一下几步,先以父容器为例:
(1)当有滑动事件产生时,会触发父容器中的onInterceptTouchEvent函数,这个函数的作用就是判断是否对事件进行拦截。在返回false时不拦截,默认也是不拦截;
(2)当事件被拦截时,就会调用dispatchTouchEvent方法,然后向子控件分发事件。如果自控件响应并消耗事件,则改事件结束。当使事件没有拦截时,就调用父控件自己的onTouchEvent方法。
对于子控件的事件处理过程是:
(1)如果子控件是ViewGroup类型的就会调用onInterceptYouchEvent然后是dispatchTouchEvent最后调用onTouchEvent方法结束事件。如果是View类型的就会调用dispatchTouchEvent然后调用onTouchEvent。
了解了View的分发机制后就可以对滑动冲突做出解决了。
switch (ev.getAction()) { case MotionEvent.ACTION_DOWN : getParent().requestDisallowInterceptTouchEvent(true); lastMotionX = x; break; case MotionEvent.ACTION_MOVE : if (condition) { //根据条件判断通知父容器是否拦截事件 getParent().requestDisallowInterceptTouchEvent(true); } else { getParent().requestDisallowInterceptTouchEvent(false); } break; case MotionEvent.ACTION_UP : case MotionEvent.ACTION_CANCEL : getParent().requestDisallowInterceptTouchEvent(false); break; }
上面代码就是一种简单的滑动冲突解决方案,其中requestDisallowInterceptTouchEvent(boolean)方法是解决冲突的关键,这个方法的作用就是通知父容器是否允许拦截事件,交给改控件进行消耗。
阅读全文
0 0
- Android中一种简单的滑动冲突解决方案
- Android中滑动冲突的解决方案
- android滑动冲突的解决方案
- android滑动冲突的解决方案
- Android 开发中scrollview嵌套webview滑动冲突的解决方案
- Android 开发中scrollview嵌套webview滑动冲突的解决方案
- Android-滑动冲突解决方案
- Android滑动冲突解决方案
- android滑动冲突解决方案
- Android滑动冲突解决方案
- android View滑动冲突的终极解决方案
- 滑动冲突的解决方案
- 关于android滑动事件的冲突的一种解决方法
- Android双向滑动冲突解决方案
- Android 滑动验证的一种简单实现
- Android中View的滑动冲突
- View的滑动冲突解决方案
- view滑动冲突的解决方案
- 如何使用openssl创建根CA和中间CA以及签署其他client证书请求
- RateLimiter介绍
- UGUI学习手记-Graphic
- onvif与boa融合后数据接收有误的一种情况---soap->tag[]为空 onvif设置编码
- sitemesh简介
- Android中一种简单的滑动冲突解决方案
- 回车点击事件
- Nexus的安装和配置
- Android注解AndroidAnnotation的使用及实现流程分析
- Vim键盘映射(Map)
- ubuntu14.04安装Tensorflow
- 将序列与zip结合起来
- Spark中的一些概念
- Android Studio 配置 FindBugs