公司需求要求必须手动触摸滑动超过1/2的时候松开可以滑动下一页,没有超过1/2返回原页,首先肯定是重写viewpager,但是发现效果比较卡顿,只能从源码下手

经过分析,源码滑动的逻辑处理在此处,truncator的属性代表判断的比例值

private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaX) {  int targetPage;  if (Math.abs(deltaX) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {  targetPage = velocity > 0 ? currentPage : currentPage + 1;  } else {  final float truncator = currentPage >= mCurItem ? 0.4f : 0.6f;  targetPage = (int) (currentPage + pageOffset + truncator);  }  if (mItems.size() > 0) {  final ItemInfo firstItem = mItems.get(0);  final ItemInfo lastItem = mItems.get(mItems.size() - 1);  // Only let the user target pages we have items for  targetPage = Math.max(firstItem.position, Math.min(targetPage, lastItem.position));  }  return targetPage;  }  

将ViewPager的源码修改为以下,改为0.5f:0.5f

private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaX) {  int targetPage;  if (Math.abs(deltaX) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {  targetPage = velocity > 0 ? currentPage : currentPage + 1;  } else {  final float truncator = currentPage >= mCurItem ? 0.5f : 0.5f;  targetPage = (int) (currentPage + pageOffset + truncator);  }  if (mItems.size() > 0) {  final ItemInfo firstItem = mItems.get(0);  final ItemInfo lastItem = mItems.get(mItems.size() - 1);  // Only let the user target pages we have items for  targetPage = Math.max(firstItem.position, Math.min(targetPage, lastItem.position));  }  return targetPage;  }

测试完全解决问题,如果使用只需要复制Viewpager和Adapter的文件到项目就可以了,没有必要全部拷入项目,现在我将viewpager相关精简的源码单独剥离出来,可以下载研究下:https://download.csdn.net/download/android_koukou/10747354,希望帮助小伙伴!!!!!

ViewPager过半(1/2)滑动翻页,超过1/2滑动下页相关推荐

  1. 在报表上打印承上页启下页

    打印帐册的时候一般要在页尾打上"启下页"或者"转下页", 在页首打上"承上页"或"承前页",实现步骤如下: 1.先建立兩 ...

  2. ViewPager实现滑动翻页效果

    实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下: import android.content.Context; import andr ...

  3. android控件翻书效果,android ViewPager实现滑动翻页效果实例代码

    实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下:import android.content.Context;import androi ...

  4. android 翻书动画效果怎么做,android ViewPager实现滑动翻页效果实例代码

    实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下: import android.content.Context; import andr ...

  5. android viewpager 上下滚动条,安卓中使用ViewPager2实现上下滑动翻页

    目标 实现上下滑动翻页,类似于抖音.快手短视频的操作方式. 实现方案 添加依赖 implementation "androidx.viewpager2:viewpager2:1.0.0&qu ...

  6. ViewPaper实现翻页,一次滑动一页

    xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  7. 程序猿媛:滑动翻页+区域点击事件

    Android GridView 滑动翻页+区域点击事件 如有转载,请保留原文地址:"http://www.cnblogs.com/LuoYer/p/3409988.html",谢 ...

  8. 程序猿媛一:Android滑动翻页+区域点击事件

    2019独角兽企业重金招聘Python工程师标准>>> 滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段. ...

  9. 微信小程序实现滑动翻页效果源码附效果图

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 微信小程序实现滑动翻页效果 效果图: 源码: <view class="mainFra ...

最新文章

  1. python迷宫问题求最短路径_用栈求解迷宫问题的所有路径及最短路径程序
  2. 数学建模——评卷问题
  3. 员外带你读论文:From RankNet to LambdaRank to LambdaMART: An Overview
  4. srs代码学习(2)- 线程模型
  5. 问题集锦13:数据库升级后,程序无法连接数据库
  6. 平面设计师,请问你的灵感在哪里充电
  7. 弹簧式止回阀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. hadoop longwritable类
  9. OpenGeoSys模拟THMC复杂过程的软件工具
  10. Starting MySQL. ERROR! The server quit without updating PID file
  11. C中遇到错误error: jump to label [-fpermissive]的解决办法
  12. 自适应直方图均衡化matlab 程序,直方图均衡化程序 matlab
  13. 国外的一些开源网站汇集以及优秀博客的博客(非 CSDN的博客)
  14. 安徽省省二级c语言准考证号查询系统,网办进度考试查询系统
  15. 依托智慧警务 打造城市公共安全防控新模式
  16. PSD格式截图软件 ScreenToLayers 1.2.3中文版
  17. 浅谈中国现货市场环境对期货市场发展的影响
  18. 评分卡分箱原则及单调性
  19. 2020哈工程上岸初复试经验
  20. 【java】Java中关于String类型的详解

热门文章

  1. AI制作有声绘本《小马历险记》
  2. 电脑打开、备份、还原注册表的方法介绍
  3. APP弱网测试工具(QNET)
  4. python基础:def函数
  5. 阻塞赋值和非阻塞赋值的区别
  6. 2020082329奚铭泽
  7. BR/EDR 测试模式
  8. Bootstrap-查询按钮和重置按钮
  9. 南京办护照+开社保证明
  10. 佐罗的故事---陕西方言版