时间:2021-05-20
在项目中用到了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; // dipsvoid 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)//你定义的值以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
pc绝地求生灵敏度设置的方法是: 1、打开“刺激战场”,点击主页面上的“设置”,选择“灵敏度设置”。 2、灵敏度不是越低越好,也不是越高越好,要调整成适合自
鼠标灵敏度怎么调呢?一起来看看本文整理的鼠标灵敏度调节方法吧,希望能帮到各位哦。 鼠标灵敏度怎么调: 一般默认的鼠标灵敏度不需要调整,但是有些人可能因为
灵敏度上下抖动的调整方法如下: 1、首先,需要开陀螺仪适应一下。灵敏度和手机机型有很大关系,一套灵敏度准确来说只适用于一个人。 2、上下浮动则需要将镜头灵敏
灵敏度左右晃动的调整方法如下: 1、首先,需要开陀螺仪适应一下。灵敏度和手机机型有很大关系,一套灵敏度准确来说只适用于一个人; 2、左右浮动则需要将镜头灵敏
对于很多游戏玩家们而言,鼠标的灵敏度很有可能关系到每一场战斗的成败,如果鼠标灵敏度不能够满足自己的要求,就需要做调整,那么win7系统鼠标灵敏度怎么调呢?今