ViewPager滑動靈敏度調整的方法實力
在項目中用到了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是類內部計算的,并沒有公開接口提供設置。
private static final int MIN_DISTANCE_FOR_FLING = 25; // dips private static final int MIN_FLING_VELOCITY = 400; // dips void 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)//你定義的值
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android使用ViewPager完成app引導頁
- Android ViewPager實現(xiàn)滑動指示條功能
- ViewPager+PagerAdapter實現(xiàn)帶指示器的引導頁
- Android使用viewpager實現(xiàn)畫廊式效果
- android使用ViewPager實現(xiàn)圖片自動切換
- RecyclerView+PagerSnapHelper實現(xiàn)抖音首頁翻頁的Viewpager效果
- Android自定義引導玩轉ViewPager的方法詳解
- TabLayout+ViewPager實現(xiàn)切頁的示例代碼
- android使用viewpager計算偏移量實現(xiàn)選項卡功能
- Android使用ViewPager實現(xiàn)滾動廣告
- Android Studio使用ViewPager+Fragment實現(xiàn)滑動菜單Tab效果
- Android 兩個ViewPager的聯(lián)動效果的實現(xiàn)
- ViewPager2滑動沖突解決方案
相關文章
Android中使用GridView實現(xiàn)仿微信圖片上傳功能(附源代碼)
由于工作要求最近在使用GridView完成圖片的批量上傳功能,我的例子當中包含仿微信圖片上傳、拍照、本地選擇、相片裁剪等功能,如果有需要的朋友可以看一下2017-08-08Android之IphoneTreeView帶組指示器的ExpandableListView效果
在正在顯示的最上面的組的標簽位置添加一個和組視圖完全一樣的視圖,作為組標簽。這個標簽的位置要隨著列表的滑動不斷變化,以保持總是顯示在最上方,并且該消失的時候就消失2013-06-06Android中判斷有無可用網絡的代碼(是否是3G或者WIFI網絡)
在android開發(fā)中經常會遇到的判斷有無可用網絡的代碼,防止客戶流量損失2013-01-01Android studio 生成帶Kotlin文檔的實現(xiàn)方式
這篇文章主要介紹了Android studio 生成帶Kotlin文檔的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android自定義view實現(xiàn)滾動選擇控件詳解
最近在開發(fā)中需要實現(xiàn)滾動進行類別的選擇,也就是我們所說的滾動選擇器,這里我們自定義來實現(xiàn)這個功能,這篇文章主要介紹了Android自定義view實現(xiàn)滾動選擇控件2022-11-11