Android之单方向滑动的Viewpager

发布时间:2019-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android之单方向滑动的Viewpager脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前一阵子在项目中遇到一个很奇葩的需求,用户注册登录的页面是分成一张张卡片的,填完一张卡片的信息才能进入下一步。我首先想到的是ViewPager,ViewPager的每个页面用Fragment填充即可。但是之前使用的ViewPager的每一个页面的左右都是紧密相连的,两个页面之间没有间隙。好在终于找到了一个第三方库可以解决这个问题:

仿魅族BannerView

这是一个模仿魅族广告轮播的第三方库,两个页面之间可以设置间距,这正好解决了我的问题(关于这个库的用法大家可以上GITHub看作者的说明,这里就不赘述了)。但是别忘了ViewPager是可以滑动的,而用户在注册时的步骤可是有先后之分的,比如输入手机号码获取验证码通过之后,才能设置密码,此时就不能任由用户滑动页面,不然步骤就乱了套了。但是完全禁止ViewPager的滑动也不现实,因为用户想向右滑返回到上一页总不能不让他这么做吧?(别问我为什么不用返回按钮,设计如此……)。所以我们需要一个可以单方向滑动的ViewPager。好在这个也不算难实现,我们可以监听触摸事件来做到。用户在界面上左右滑动时,我们可以监听起始坐标值和手指滑动过程中的坐标值,如果滑动后的坐标值比起始坐标值大,那么此时就是向右滑动,可以响应;反之则不必响应:

        float beforeX;
        mzBannerView.getViewPager().setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        //获取起始坐标值
                        beforeX = event.getX();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        if(event.getX() - beforeX < 0){ //禁止左滑
                            return true;
                        }
                        //重新对起始坐标赋值
                        beforeX = event.getX();
                        break;
                }
                return false;
            }
        });

以上的代码是禁止左滑的,如果要禁止右滑,只需改成event.getX() - beforeX > 0

你问我为什么没有一整套的注册登录逻辑和效果,因为……加了一个晚上的班弄出滑动效果之后第二天早上就改需求了,改需求了!!!所以能分享的也就只有这些了。

相关文章Android之禁止ViewPager滑动

脚本宝典总结

以上是脚本宝典为你收集整理的Android之单方向滑动的Viewpager全部内容,希望文章能够帮你解决Android之单方向滑动的Viewpager所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。