ViewPager随手势左滑退出
来源:互联网 发布:法棍 知乎 编辑:程序博客网 时间:2024/06/11 06:01
页面随手势左滑退出,ViewPager本身有滑动事件,要想ViewPager也实现随手势滑动退出,需要对ViewPager的事件动些手脚。
看代码,控制ViewPager的上下左右滑动,喜欢拿去。
/** * Auther: winds * Data: 2017/4/27 * Desc: 控制ViewPager的上下左右滑动 */public class SolveViewPager extends ViewPager { int startX; int startY; boolean updowneable = false; //上下滑动事件是否需要父控件拦截 默认不需要 false boolean leftable = true; //向左滑动事件 默认需要true boolean rightable = true; //向右滑动事件 默认需要true public SolveViewPager(Context context) { super(context); } public SolveViewPager(Context context, AttributeSet attrs) { super(context, attrs); } /** * 事件分发, 请求父控件是否拦截事件 * 1. 右划, 而且是第一个页面, 需要父控件拦截 * 2. 左划, 而且是最后一个页面, 需要父控件拦截 * 3. 上下滑动, 不需要父控件拦截 */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: getParent().requestDisallowInterceptTouchEvent(true);// 不要拦截, // 这样是为了保证ACTION_MOVE调用 startX = (int) ev.getRawX(); startY = (int) ev.getRawY(); break; case MotionEvent.ACTION_MOVE: int endX = (int) ev.getRawX(); int endY = (int) ev.getRawY(); if (Math.abs(endX - startX) > Math.abs(endY - startY)) {// 左右滑动 if (endX > startX) {// 右划 if (getCurrentItem() == 0) {// 第一个页面, 需要父控件拦截 getParent().requestDisallowInterceptTouchEvent(!rightable); } } else {// 左划 if (getCurrentItem() == getAdapter().getCount() - 1) {// 最后一个页面, // 需要拦截 getParent().requestDisallowInterceptTouchEvent(!leftable); } } } else {// 上下滑动 getParent().requestDisallowInterceptTouchEvent(!updowneable); //不需要父控件拦截 } break; } return super.dispatchTouchEvent(ev); }}
其实,解决RecyclerView下拉刷新和Banner的滑动冲突,也是同样的思路。
阅读全文
0 0
- ViewPager随手势左滑退出
- 可以随手指滑动切换tab的viewpager
- 随手
- 随手
- ViewPager滑动到最后退出bug
- Activity随手势滑动退出,及模糊Dialog(类似于IOS的效果)
- ViewPager结合PagerAdapter实现在Fragment下的随手指滑动翻页
- 如何在Fragment中使用ViewPager,并实现导航随手势滑动效果
- Android ViewPager内容部分随手势上下滑动隐藏与显示Indicator效果的实现
- Android ViewPager内容部分随手势上下滑动隐藏与显示Indicator效果的实现
- Android ViewPager内容部分随手势上下滑动隐藏与显示Indicator效果的实现
- 如何在Fragment中使用ViewPager,并实现导航随手势滑动效果
- android 带fragment的Viewpager旋转屏幕时异常退出
- 退出
- 轻松实现Fragment监听返回键,回退ViewPager双击退出
- Viewpager
- ViewPager
- ViewPager
- static 关键字
- activity表创建
- 基于TCP协议用多线程实现并发服务器,实现思路、算法和demo
- Manacher算法
- 洛谷P1210回文检测
- ViewPager随手势左滑退出
- [转载]Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)
- Linux常用的命令及操作技巧
- 单例设计模式
- POJ 3127 Lineland's Airport 笔记
- UML---总结篇
- Uva202
- Linux系统用户账号的管理技巧
- 深度神经网络(DNN)的正则化