国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

ViewPager滑動靈敏度調(diào)整的方法實力

2019-12-12 00:29:25
字體:
供稿:網(wǎng)友

在項目中用到了Android的ViewPager組件,但是發(fā)現(xiàn)在滑動的時候不是特別流暢,有些小的滑動無法響應,于是考慮進行優(yōu)化。

 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是類內(nèi)部計算的,并沒有公開接口提供設置。

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  }

我們可以通過反射來調(diào)整這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)//你定義的值

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 红河县| 彭州市| 赞皇县| 安达市| 夏河县| 临沧市| 邯郸市| 苏州市| 洞口县| 化州市| 江陵县| 界首市| 巴林左旗| 昌江| 通河县| 阜新| 商南县| 集安市| 尉氏县| 西昌市| 宣武区| 肇东市| 武乡县| 邳州市| 和政县| 克拉玛依市| 慈利县| 涿州市| 民勤县| 德昌县| 枣阳市| 达拉特旗| 吉木乃县| 三台县| 合肥市| 高唐县| 大渡口区| 台南县| 平昌县| 栖霞市| 临湘市|