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

首頁 > 系統 > Android > 正文

ViewPager滑動靈敏度調整的方法實力

2019-10-21 21:37:23
字體:
來源:轉載
供稿:網友

在項目中用到了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)//你定義的值

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永清县| 涞水县| 中超| 葫芦岛市| 永德县| 云南省| 钟山县| 龙南县| 宽甸| 杭州市| 合作市| 万荣县| 鄂尔多斯市| 织金县| 鹤庆县| 辰溪县| 嘉祥县| 太仆寺旗| 英吉沙县| 郧西县| 恭城| 新邵县| 广西| 额尔古纳市| 通海县| 新郑市| 崇文区| 广元市| 惠水县| 台北市| 鄯善县| 冕宁县| 东平县| 镶黄旗| 张北县| 旬阳县| 凤阳县| 松潘县| 乌什县| 革吉县| 梁河县|