解决ScrollView嵌套viewpager滑动事件冲突问题
2016-03-03 12:14
597 查看
重写ScrollView
第一种方案能解决viewpager的滑动问题,但是scrollView有时会滑不动
第二种方案能够解决上面的问题
第一种方案能解决viewpager的滑动问题,但是scrollView有时会滑不动
public class VerticalScrollView extends ScrollView { private GestureDetector mGestureDetector; public VerticalScrollView(Context context, AttributeSet attrs){ super(context, attrs); mGestureDetector = new GestureDetector(context, new YScrollDetector()); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); } class YScrollDetector extends SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { /** * if we're scrolling more closer to x direction, return false, let subview to process it */ HBLog.i("VerticalScrollView", distanceY+"----"+distanceX); return (Math.abs(distanceY) > Math.abs(distanceX)); } } }
第二种方案能够解决上面的问题
public class VerticalScrollView extends ScrollView { private float xDistance, yDistance, xLast, yLast; public VerticalScrollView(Context context) { super(context); } public VerticalScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public VerticalScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; xLast = ev.getX(); yLast = ev.getY(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - xLast); yDistance += Math.abs(curY - yLast); xLast = curX; yLast = curY; if (xDistance > yDistance) { return false; } } return super.onInterceptTouchEvent(ev); } }
相关文章推荐
- git history 记录(上传到 issu-170 )
- 简单说下tcp/udp的区别,udp咋可以模拟tcp
- Java多线程之concurrent包(三)——Executor框架与线程池
- Android5.0-新特性
- 2013-2015年度最受欢迎的前端框架
- 蒙面超人,变身
- git命令行基本用法
- MIFARE系列4《组成图》
- Java IO
- 奇异值与潜在语义索引LSI
- [转载]不同服务器数据库之间的数据操作--复制同步(整理版)
- Java List 如何传值
- Android Studio的学习
- 机房日常做题记录
- linux面试之内存管理
- java 操作FTP服务器(1)-连接服务器测试
- VM redhat6.4下安装oracle 11g回顾
- 神兽草泥马
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-009-用SPEL给bean运行时注入依赖值
- centos上使用第三方yum源获取更多的rpm包