使用ViewPager怎么实现滑动灵敏度调整

这期内容当中小编将会给大家带来有关使用ViewPager怎么实现滑动灵敏度调整,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

ViewPager 手指滑动切换时会不灵敏,我们查看ViewPager源码,切换的判断是由mFlingDistance和mMinimumVelocity决定的。

使用ViewPager怎么实现滑动灵敏度调整

privateintdetermineTargetPage(intcurrentPage,floatpageOffset,intvelocity,intdeltaX){
inttargetPage;
if(Math.abs(deltaX)>mFlingDistance&&Math.abs(velocity)>mMinimumVelocity){
targetPage=velocity>0?currentPage:currentPage+1;
}else{
finalfloattruncator=currentPage>=mCurItem?0.4f:0.6f;
targetPage=currentPage+(int)(pageOffset+truncator);
}
......

而mFlingDistance和mMinimumVelocity是类内部计算的,并没有公开接口提供设置。

privatestaticfinalintMIN_DISTANCE_FOR_FLING=25;//dips

privatestaticfinalintMIN_FLING_VELOCITY=400;//dips
voidinitViewPager(){

mMinimumVelocity=(int)(MIN_FLING_VELOCITY*density);

mFlingDistance=(int)(MIN_DISTANCE_FOR_FLING*density
}

我们可以通过反射来调整这2个值,解决滑动灵敏度的问题

valmFlingDistance:Field
mFlingDistance=ViewPager::class.java.getDeclaredField("mFlingDistance")
mFlingDistance.setAccessible(true)
valdistance=mFlingDistance.get(mViewPager)//获取值
mFlingDistance.set(mViewPager,10)//你定义的值

valmMinimumVelocity:Field
mMinimumVelocity=ViewPager::class.java.getDeclaredField("mFlingDistance")
mMinimumVelocity.setAccessible(true)
valvelocity=mMinimumVelocity.get(mViewPager)//获取值
mMinimumVelocity.set(mViewPager,5)//你定义的值

上述就是小编为大家分享的使用ViewPager怎么实现滑动灵敏度调整了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-06-13 23:18:37
收藏
分享
海报
0 条评论
177
上一篇:CSS中怎样处理短内容和长内容 下一篇:idea中怎么导入ssm项目
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码