ViewPager滑動(dòng)靈敏度調(diào)整的方法實(shí)力
在項(xiàng)目中用到了Android的ViewPager組件,但是發(fā)現(xiàn)在滑動(dòng)的時(shí)候不是特別流暢,有些小的滑動(dòng)無(wú)法響應(yīng),于是考慮進(jìn)行優(yōu)化。
ViewPager 手指滑動(dòng)切換時(shí)會(huì)不靈敏,我們查看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)部計(jì)算的,并沒(méi)有公開(kāi)接口提供設(shè)置。
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 }
我們可以通過(guò)反射來(lái)調(diào)整這2個(gè)值,解決滑動(dòng)靈敏度的問(wèn)題
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)//你定義的值
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用ViewPager完成app引導(dǎo)頁(yè)
- Android ViewPager實(shí)現(xiàn)滑動(dòng)指示條功能
- ViewPager+PagerAdapter實(shí)現(xiàn)帶指示器的引導(dǎo)頁(yè)
- Android使用viewpager實(shí)現(xiàn)畫廊式效果
- android使用ViewPager實(shí)現(xiàn)圖片自動(dòng)切換
- RecyclerView+PagerSnapHelper實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)的Viewpager效果
- Android自定義引導(dǎo)玩轉(zhuǎn)ViewPager的方法詳解
- TabLayout+ViewPager實(shí)現(xiàn)切頁(yè)的示例代碼
- android使用viewpager計(jì)算偏移量實(shí)現(xiàn)選項(xiàng)卡功能
- Android使用ViewPager實(shí)現(xiàn)滾動(dòng)廣告
- Android Studio使用ViewPager+Fragment實(shí)現(xiàn)滑動(dòng)菜單Tab效果
- Android 兩個(gè)ViewPager的聯(lián)動(dòng)效果的實(shí)現(xiàn)
- ViewPager2滑動(dòng)沖突解決方案
相關(guān)文章
Android中WebView加載的網(wǎng)頁(yè)被放大的解決辦法
這篇文章主要介紹了Android中WebView加載的網(wǎng)頁(yè)被放大的問(wèn)題的解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2016-12-12Android中使用GridView實(shí)現(xiàn)仿微信圖片上傳功能(附源代碼)
由于工作要求最近在使用GridView完成圖片的批量上傳功能,我的例子當(dāng)中包含仿微信圖片上傳、拍照、本地選擇、相片裁剪等功能,如果有需要的朋友可以看一下2017-08-08Android之IphoneTreeView帶組指示器的ExpandableListView效果
在正在顯示的最上面的組的標(biāo)簽位置添加一個(gè)和組視圖完全一樣的視圖,作為組標(biāo)簽。這個(gè)標(biāo)簽的位置要隨著列表的滑動(dòng)不斷變化,以保持總是顯示在最上方,并且該消失的時(shí)候就消失2013-06-06Android中判斷有無(wú)可用網(wǎng)絡(luò)的代碼(是否是3G或者WIFI網(wǎng)絡(luò))
在android開(kāi)發(fā)中經(jīng)常會(huì)遇到的判斷有無(wú)可用網(wǎng)絡(luò)的代碼,防止客戶流量損失2013-01-01Android studio 生成帶Kotlin文檔的實(shí)現(xiàn)方式
這篇文章主要介紹了Android studio 生成帶Kotlin文檔的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android EditText設(shè)置邊框的操作方法
這篇文章主要介紹了Android EditText設(shè)置邊框,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12Android自定義view實(shí)現(xiàn)滾動(dòng)選擇控件詳解
最近在開(kāi)發(fā)中需要實(shí)現(xiàn)滾動(dòng)進(jìn)行類別的選擇,也就是我們所說(shuō)的滾動(dòng)選擇器,這里我們自定義來(lái)實(shí)現(xiàn)這個(gè)功能,這篇文章主要介紹了Android自定義view實(shí)現(xiàn)滾動(dòng)選擇控件2022-11-11Android gradle打包并自動(dòng)上傳的方法
本篇文章主要介紹了Android gradle打包并自動(dòng)上傳的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09