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

