解决SwipeRefreshLayout和ScrollView中嵌套ViewPager卡顿问题
2016-04-29 18:41
369 查看
autoCycleViewPager.setOnTouchListener(this); int downX; int downY; int dragthreshold = 30; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = (int) event.getRawX(); downY = (int) event.getRawY(); break; case MotionEvent.ACTION_MOVE: int distanceX = Math.abs((int) event.getRawX() - downX); int distanceY = Math.abs((int) event.getRawY() - downY); if (distanceX > distanceY) { refreshLayout.setEnabled(false); } if (distanceY > distanceX && distanceY > dragthreshold) { autoCycleViewPager.getParent().requestDisallowInterceptTouchEvent(false); scrollView.getParent().requestDisallowInterceptTouchEvent(true); refreshLayout.setEnabled(true); } else if (distanceX > distanceY && distanceX > dragthreshold) { refreshLayout.setEnabled(false); autoCycleViewPager.getParent().requestDisallowInterceptTouchEvent(true); scrollView.getParent().requestDisallowInterceptTouchEvent(false); } break; case MotionEvent.ACTION_UP: autoCycleViewPager.getParent().requestDisallowInterceptTouchEvent(false); scrollView.getParent().requestDisallowInterceptTouchEvent(false); refreshLayout.setEnabled(true); break; case MotionEvent.ACTION_CANCEL: refreshLayout.setEnabled(true); break; } return false; }
只需要在监听ViewPager的OnTouch事件上做如上的处理就可以完美解决问题。
相关文章推荐
- debian8.4下配置pgpool+pg9.5双主备
- Java常见问题-高亮
- linux开发工具--Makefile(1) 简单的Makefile规则和Makefile自动变量
- WebBasic03-CSS
- Qt学习之路_4(Qt UDP的初步使用)
- Flexbox 自由的布局
- 实验十 路由器OSPF动态路由配置
- unity, 查看.anim中的动画曲线(和帧)
- 动态链接库是如何建立的(2)
- C++重载赋值运算符(=)
- listFiles(FileFilter filter) 的源码解析
- html+css 常用的知识点
- 【原】配置Log4j,使得MyBatis打印出SQL语句
- ios观察者设计模式。(在一个类监听另一个类属性的变化时响应)
- Material 中的SearchView的学习和研究
- BZOJ 1651 专用牛棚
- Dubbo-zookeeper的部署和安装
- adb devices error
- 决策表
- IDC生产环境检测IP是否在用的Shell脚本