使用viewpager怎么实现滑动灵敏度调整-亚博电竞手机版

这期内容当中小编将会给大家带来有关使用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怎么实现滑动灵敏度调整了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图