国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上蔡县| 泸州市| 孝感市| 苍梧县| 东海县| 新安县| 栾城县| 上虞市| 昌江| 阜宁县| 视频| 屯留县| 佛教| 阳春市| 民县| 台北县| 丹江口市| 呼玛县| 海林市| 潼南县| 镶黄旗| 十堰市| 洪雅县| 图木舒克市| 阿克苏市| 镇赉县| 白城市| 林芝县| 綦江县| 禹城市| 东台市| 陆良县| 德州市| 兰州市| 斗六市| 沐川县| 彩票| 富源县| 卢氏县| 葫芦岛市| 夏邑县|