使用viewpager怎么实现滑动灵敏度调整-mile米乐体育
开发技术
2021年06月13日 23:18
0
这期内容当中小编将会给大家带来有关使用viewpager怎么实现滑动灵敏度调整,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
viewpager 手指滑动切换时会不灵敏,我们查看viewpager源码,切换的判断是由mflingdistance和mminimumvelocity决定的。
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怎么实现滑动灵敏度调整了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。
展开全文