ViewPager滑动灵敏度调整的方法实力
2019-01-15 12:03
1641 查看
在项目中用到了Android的ViewPager组件,但是发现在滑动的时候不是特别流畅,有些小的滑动无法响应,于是考虑进行优化。
ViewPager 手指滑动切换时会不灵敏,我们查看ViewPager源码,切换的判断是由mFlingDistance和mMinimumVelocity决定的。
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 = currentPage + (int) (pageOffset + truncator); } ......
而mFlingDistance和mMinimumVelocity是类内部计算的,并没有公开接口提供设置。
private static final int MIN_DISTANCE_FOR_FLING = 25; // dips private static final int MIN_FLING_VELOCITY = 400; // dips void initViewPager() { mMinimumVelocity = (int) (MIN_FLING_VELOCITY * density); mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density }
我们可以通过反射来调整这2个值,解决滑动灵敏度的问题
val mFlingDistance: Field mFlingDistance = ViewPager::class.java.getDeclaredField("mFlingDistance") mFlingDistance.setAccessible(true) val distance = mFlingDistance.get(mViewPager)//获取值 mFlingDistance.set(mViewPager, 10) //你定义的值 val mMinimumVelocity: Field mMinimumVelocity = ViewPager::class.java.getDeclaredField("mFlingDistance") mMinimumVelocity.setAccessible(true) val velocity = mMinimumVelocity.get(mViewPager)//获取值 mMinimumVelocity.set(mViewPager, 5)//你定义的值
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Android ViewPager + Fragment实现滑动页面效果
- 解决ViewPager和SlidingPaneLayout的滑动事件冲突问题
- ViewPager和SlidingPaneLayout的滑动事件冲突解决方法
- Android ViewPager实现左右滑动翻页效果
- android自定义ViewPager水平滑动弹性效果
- Android 中 viewpager 滑动指示器的实例代码
- Android使用ViewPager实现屏幕滑动效果
- Android ViewPager实现左右滑动的实例
- Android使用ViewPager实现图片滑动预览效果
- Android中DrawerLayout+ViewPager滑动冲突的解决方法
相关文章推荐
- ViewPager和Fragment实现滑动标签页步骤以及方法总结
- HorizontalScrollView中嵌套ViewPager时,ViewPager无法滑动的问题解决方法
- SwipeRefreshLayout和Viewpager滑动时冲突解决方法
- Android编程实现ViewPager多页面滑动切换及动画效果的方法
- Android重写ViewPager修改滑动灵敏度
- 最靠谱的禁止ViewPager滑动方法
- 用最简单的方法实现ViewPager无限循环滑动(跑马灯)效果
- Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法
- ViewPager 常见滑动冲突解决方法
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- 最靠谱的禁止ViewPager滑动方法
- 靠谱的禁止ViewPager滑动方法
- 监听ViewPager滑动到最后一页时,再次拖动的方法监听
- ViewPager和SlidingPaneLayout的滑动事件冲突解决方法
- ViewPager 滑动一半的判断方法以及左滑右滑判断
- ViewPager 实现左右循环滑动图片的两种方法
- Android App中ViewPager所带来的滑动冲突问题解决方法
- 【Android】完美解决SwipeRefreshLayout中嵌套ViewPager时滑动冲突的方法
- Android笔记-ViewPager禁止滑动的方法
- 用requestDisallowInterceptTouchEvent()方法防止viewpager和子view滑动事件冲突