ViewPager 滑动一半的判断方法以及左滑右滑判断

做项目的时候,会碰到用viewpager + fragments去实现多页滑动。有些时候需要完成:界面在滑动到一半或是一半以上的时候,需要把title之类的切换到下一个页面。这个时候仅仅依赖Viewpager的接口是不能判断,这里提供一个方法:判断viewpager是左滑还是右滑,同时对滑过一半的时候(这个参数可以调),进行相关操作。

  //定义两个变量,这个两个变量是表示滑动时候,positionOffset 是从大到
  //小的变化,还是从小到大的变化。用于在滑动时候,避免多次调用一个方法
  private boolean isSmallToBig = true;
  private boolean isBigToSmall = false;

   //记录上一次滑动的positionOffsetPixels值
   private int lastValue = -1;
   @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        if (positionOffset != 0) {
            mCurrentPage = position;
            boolean isLeft = true;
            if (lastValue >= positionOffsetPixels) {
                //右滑
                isLeft = false;
            } else if (lastValue < positionOffsetPixels) {
                //左滑
                isLeft = true;
            }
            setIndiactorView(positionOffset,isLeft);
        }
        lastValue = positionOffsetPixels;

    }

    private void setIndiactorView(float positionOffset,boolean isLeft) {

       //设定滑动的边界,这里设置的滑动到一半
        float radiusOffsetHead = 0.5f;
        //如果滑动小于一半,通过isSmallToBig这个变量来避免多次调用
       // initIndicatorView 方法
        if (positionOffset <= radiusOffsetHead && !isSmallToBig) {

            initIndicatorView(mCurrentPage);
            isSmallToBig = true;
            isBigToSmall = false;

        } else if (positionOffset > radiusOffsetHead && !isBigToSmall) {
          //超过一半。如果是左滑,就-1,如果是右滑,就+1
            int currnt  = isLeft ? mCurrentPage + 1 : mCurrentPage - 1;
            initIndicatorView(currnt);
            isBigToSmall = true;
            isSmallToBig = false;
        }
    }
时间: 2024-10-25 21:30:31

ViewPager 滑动一半的判断方法以及左滑右滑判断的相关文章

IOS开发—视图控制器左边缘右滑pop出栈

IOS视图控制器左边缘右滑pop出栈 IOS7.0之后,苹果优化了一个小功能,就是对于UINavagationController堆栈里的UIViewController,只要轻轻在视图控制器的左边缘右滑一下,该视图控制器就会pop出栈(前提当然是对于非根视图控制器而言).实现方法很简单,一句话搞定: self.navigationController.interactivePopGestureRecognizer.enabled = YES; 事实上对于一个视图控制器而言,该属性的默认值即为Y

Android SwipeToDismiss:左滑/右滑删除ListView条目Item

?? <Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github上的项目链接地址:https://github.com/romannurik/Android-SwipeToDismiss ).该开源项目旨在:使得一个ListView的item在用户的手指在屏幕上左滑或者右滑时候,删除当前的这个ListView Item. 此种特效在新版的Android中应用不少.比方在

前端福利——左滑右滑,绝对是你见过的最简单的写法

上个月使用bootstrap和seajs搭建了前端通用框架,就是为了使代码分块话,js和css直接通过配置就可调用,这样既方便了以后的开发,又方便了效率! 先看下框架图形吧 example就是手机端经常用到的示例 今天就是把我写的左滑右滑分享给大家,先看下图例吧 index.html代码 引用三个js jquery.js swiperhand.js index.js <div id="pagenos"> <span class="myspan" i

Vue移动端左滑右滑

使用的组件地址:https://github.com/vuejs/vue-touch/tree/next 注:vue2.0以上 1.安装 npm install [email protected] --save 2.main.js中引入 import VueTouch from 'vue-touch' Vue.use(VueTouch, {name: 'v-touch'}); 3.在使用的页面中 <v-touch @swipeleft = "swipeLeft" @swiperi

小程序 手机左滑右滑事件监听

<view class="touch" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" ></view> // 触摸开始事件 touchStart: function (e) { touchDot = e.touches[0].pageX; // 获取触摸时的原点 // 使用js计时器记录时间 i

移动端h5禁用浏览器左滑右滑的前进后退功能

在项目运行过程中发现,用户在有左右滑动前进后退的功能的浏览器上签字时,偶然触发了前进后退会导致canvas像是重置了一样内容消失,所以需要在代码中处理这种情况. 基本原理就是在touchmove事件中阻止默认事件,使浏览器不会触发前进后退事件,但是也会无法触发scroll事件让页面正常滚动,后续如何让页面能正常滚动就会有多种思路. 参考https://www.cnblogs.com/Miracle-ZLZ/p/7852421.html文中第5点推荐使用IScroll,但看了一下github发现太

PullToRefreshListView中嵌套ViewPager滑动冲突的解决

PullToRefreshListView中嵌套ViewPager滑动冲突的解决 最近恰好遇到PullToRefreshListView中需要嵌套ViewPager的情况,ViewPager 作为头部添加到ListView中,发先ViewPager在滑动过程中流畅性太差几乎很难左右滑动.在网上也看了很多大神的介绍,看了ViewPager的源码.其实思路很简单,只不过没有看到有教完整的说明,为了帮转像我这样的green hand 少走弯路,将过程整理下.大神自动略过~_~: 滑动冲突的解决大概要处

String类的常用判断方法使用练习

选取了一些常用的判断方法进行了使用练习,后续跟新其他方法 package StringDemo; // String类的判断方法解析 // 1:boolean equals(); // 判断字符串是否相等,区分大小写 // 2:boolean equalsIgnoreCase(String anotherString) // 将此 String 与另一个 String 比较,不考虑大小写 // 3.boolean contains(CharSequence s) // 判断字符串对象是否包含指定

如何禁止viewPager滑动

众所周知,viewPager是能够滑动的,但有时候我们需要禁止它的滑动(微笑地面对*—……—*). 情况是这样的: activity中有一个viewPager,viewPager中加入3个Fragment,第三个Fragment中又使用了一个viewPager,这个viewPager中又加入了几个Fragment(本人不是受虐狂,仅仅是功能需要).如图: 想实现的功能: 点击activity的图标或者滑动的时候能够切换第一个viewPager中的Fragment,点击Fragment3中的图标能