android view 滑动冲突解决办法
来源:互联网 发布:mac向上箭头 编辑:程序博客网 时间:2024/05/17 08:10
滑动冲突
android view 的滑动冲突 典型的就是 水平 和垂直view 之间的布局镶嵌所产生的滑动冲突。
准备
1.了解android 的事件传递;2.了解dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent 三个方法的作用
解决思路
1、外部拦截法 水平A 控件(简称A) 垂直B 控件(简称B) A 包含 B 只拦截需要A处理的touch事件,否则放行 -> onInterceptTouchEvent2、内部拦截发 所有的事件 都发送给B B来负责 时间的分发 B 拦截所需要的touch 事件
伪代码实现
1、外部拦截机制public boolean onInterceptTouchEvent( MotionEvent event) { boolean intercepted = false; int x = (int) event. getX(); int y = (int) event. getY(); switch (event. getAction()) { case MotionEvent. ACTION_ DOWN: intercepted = false; break; case MotionEvent. ACTION_ MOVE: if (父 容器 需要 当前 点击 事件) { intercepted = true; } else { intercepted = false; } break; case MotionEvent. ACTION_ UP: intercepted = false; break; default: break; } mLastXIntercept = x; mLastYIntercept = y; return intercepted;
}
2、内部拦截机制
public boolean dispatchTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_ DOWN: { parent.requestDisallowInterceptTouchEvent(true); break; } case MotionEvent.ACTION_ MOVE: { int deltaX = x - mLastX; int deltaY = y - mLastY; if (父 容器 需要 此类 点击 事件)){ parent.requestDisallowInterceptTouchEvent(false); } break; } case MotionEvent.ACTION_ UP: { break; } default: break; } mLastX = x; mLastY = y; return super.dispatchTouchEvent(event); }
多重嵌套 也可以使用这种方法,需要自己发挥
阅读全文
0 0
- android view 滑动冲突解决办法
- android View滑动冲突解决
- [Android] 解决 View 滑动冲突法则
- Android中View的滑动冲突
- android View滑动冲突的解决方式
- 【Android View事件分发机制】滑动冲突
- 一文解决Android View滑动冲突
- android View滑动冲突的终极解决方案
- Android滑动和点击手势冲突解决办法
- Android View事件分发机制及View的滑动冲突
- view 的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View 的滑动冲突
- View的滑动冲突
- View滑动冲突处理
- MongoDB Java API for 插入和单collection基本查询使用示例
- HTML5 <datalist>标签
- 前端跨域
- JavaScript的全局函数
- Python 基础 —— Twisted介绍
- android view 滑动冲突解决办法
- Caffe基础
- MAC 安装mysql
- MySQL基本操作(三)
- E
- spring容器被多次初始化问题排查及解决
- css(三)----属性(2)
- Android 应用File存储
- Android BroadcastReceiver之APP安装、更新、卸载的监听