android开发之定制ViewPager滑动事件
2015-08-21 21:13
417 查看
明天还要加班,苦逼的程序猿,简单说说最近遇到的一个问题吧。
我在viewpager+fragment学习笔记中简单介绍过ViewPager+Fragment的用法,其实并不难,当时实现了一个如下图所示的效果:
然而,在实际开发中这一点技术可能根本不够用,项目中会有各种各样奇葩的需求,我最近就遇到了一个怪异的需求,捣鼓之后还是解决了,今天和大家聊聊。
由于涉及到公司项目,我在这里就使用我自己制作的一个Demo来和大家介绍。
我们要实现的效果如下图:
这里一共有三个Fragment,其中两个通过左右滑动显示,第三个要通过点击右上角的+来显示,在第三个Fragment上我们通过点击Fragment上的一个按钮再回到第一个Fragment上。其实这个要做非常简单,就是重写ViewPager的onTouch事件,在onTouch中判断当前的item,如果是1则取消向左滑动的动作。大致的一个思路就是这样。看代码:
我在项目中是重写了onInterceptTouchEvent方法。但是这里重写onInterceptTouchEvent不管用,还是得重写onTouchEvent事件,个中原因想到周日好好研究研究,明天还要加班,今天就说这么多吧。有问题欢迎讨论。
源码下载
我在viewpager+fragment学习笔记中简单介绍过ViewPager+Fragment的用法,其实并不难,当时实现了一个如下图所示的效果:
然而,在实际开发中这一点技术可能根本不够用,项目中会有各种各样奇葩的需求,我最近就遇到了一个怪异的需求,捣鼓之后还是解决了,今天和大家聊聊。
由于涉及到公司项目,我在这里就使用我自己制作的一个Demo来和大家介绍。
我们要实现的效果如下图:
这里一共有三个Fragment,其中两个通过左右滑动显示,第三个要通过点击右上角的+来显示,在第三个Fragment上我们通过点击Fragment上的一个按钮再回到第一个Fragment上。其实这个要做非常简单,就是重写ViewPager的onTouch事件,在onTouch中判断当前的item,如果是1则取消向左滑动的动作。大致的一个思路就是这样。看代码:
public class MyViewPager extends ViewPager { private int startX; private float currentX; public MyViewPager(Context context) { super(context); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: startX = (int) ev.getX(); Log.i("lenve", "ACTION_DOWN"); break; case MotionEvent.ACTION_MOVE: Log.i("lenve", "ACTION_MOVE"); currentX = ev.getX(); break; case MotionEvent.ACTION_UP: Log.i("lenve", "ACTION_UP"); break; } if (getCurrentItem() == 1 && currentX < startX) { return false; } else if (getCurrentItem() == 2) { return false; } else { return super.onTouchEvent(ev); } } }
我在项目中是重写了onInterceptTouchEvent方法。但是这里重写onInterceptTouchEvent不管用,还是得重写onTouchEvent事件,个中原因想到周日好好研究研究,明天还要加班,今天就说这么多吧。有问题欢迎讨论。
源码下载
相关文章推荐
- android开发之定制ViewPager滑动事件
- android开发之定制ViewPager滑动事件
- android开发之定制ViewPager滑动事件
- Android,去掉页面标题栏
- Android 图片的滑动效果(ViewPager、PagerAdapter)
- Android VLC 编译总结
- android定位服务
- Android学习笔记之绘图api以及自定义视图
- 彻底理解android中的回调机制
- android json解析使用总结(三) — 三级城市联动的实现
- Android权限列表permission说明
- 蓝牙压力测试报抛android.os.TransactionTooLargeException异常分析总结
- Android之基本控件
- android中TextView、TextEdit和Button的用法以及draw9patch
- XE5 Android 开发数据访问server端
- Jenkins自动编译Android Studio创建的工程
- android下设备权限为777却无法访问的问题
- Android相关图书推荐
- 新建Android项目时避免继承ActionBarActivity并去掉titleBar
- 浅析WPhone、Android的Back与Home键