资讯专栏INFORMATION COLUMN

Android之单方向滑动的Viewpager

hedzr / 3410人阅读

摘要:前一阵子在项目中遇到一个很奇葩的需求,用户注册登录的页面是分成一张张卡片的,填完一张卡片的信息才能进入下一步。但是之前使用的的每一个页面的左右都是紧密相连的,两个页面之间没有间隙。所以我们需要一个可以单方向滑动的。相关文章之禁止滑动

前一阵子在项目中遇到一个很奇葩的需求,用户注册登录的页面是分成一张张卡片的,填完一张卡片的信息才能进入下一步。我首先想到的是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滑动

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13945.html

相关文章

  • 滑动 - 收藏集 - 掘金

    摘要:分析提到侧滑删除,一个经典的例子就是玩转仿探探卡片式滑动效果掘金讲起本篇博客的历史起源,估计有一段历史了。列表左右滑动开源组件掘金是一款用于为上的排布提供左滑右滑操作的库。 Android 仿 YouTube 拖拽视频效果的实现 - Android - 掘金Android仿YouTube拖拽视频效果的实现 youtube-like-drag-video-view 代码已经开源到GitH...

    ShevaKuilin 评论0 收藏0
  • android一个右滑退出效果实现

    摘要:首先,网上介绍相关右滑退出实现的文章相当多,本文只是我自己实现的一个记录。考虑到子可能是等自身有横向滑动属性的控件,可以对这些控件单独处理,或者开一个手动添加忽略右滑退出子的接口。 首先,网上介绍相关右滑退出实现的文章相当多,本文只是我自己实现的一个记录。 思路与分析 介绍: android上最出名的右滑退出库莫过于SwipeBackLayout,效果如下:showImg(https:...

    iOS122 评论0 收藏0
  • Android滑动冲突解决

    摘要:对于底层的来说,有一种方法可以阻止父层的截获事件,就是调用方法。父控件就不会拦截的滑动事件父容器需要此类点击事件(1).场景一:外部滑动方向跟内部滑动方向不一致,比如外部左右滑动,内部上下滑动   ViewPager+Fragment配合使用,会有滑动冲突,但是ViewPager内部处理了这种滑动冲突   如果采用的不是ViewPager而是ScrollView就必须手动处理滑动事件  ...

    shiweifu 评论0 收藏0
  • Android Studio

    摘要:应用程序响应速度最糟糕的是应用程序无响应对话框。然而,不幸的是,并不能获取所要的结果,宽高值均为。提供侧滑操作的控件这是一款提供侧滑功能的,可以设置它的滑动方向左右上下。 写给 Android 开发者的混淆使用手册 点击打开链接 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。 首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源...

    dunizb 评论0 收藏0
  • ViewPager2避坑系列】瞬间暴增数个Fragment

    摘要:前言最近我在关注的使用,期间一直基于官方的调试,今天遇到一个奇葩的问题,捉摸了半天最终找到原因,原来是中布局的问题,事后感觉有必要分享一下这个过程,一来可以巩固测量的知识,二来希望大家能避开这个坑阅读指南代码基于,看官老爷最好能下载前言 最近我在关注ViewPager2的使用,期间一直基于官方的Demo调试android-viewpager2,今天遇到一个奇葩的问题,捉摸了半天最终找到原因,...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

hedzr

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<