zoukankan      html  css  js  c++  java
  • 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;
            }
        }
  • 相关阅读:
    C#_简单实用的翻页
    C#注意事项及错误处理
    C# 委托和Lambda---基础
    C#_数据转换 实用方法
    C#图片处理---基础
    C#_使用SMTP发送邮件
    C#_生成HTML
    C#操作XML文档---基础
    百度地图 使用两条平行线表示路线
    Gradle version 2.10 is required. Current version is 2.8.
  • 原文地址:https://www.cnblogs.com/StephenWu/p/5720282.html
Copyright © 2011-2022 走看看