android ViewPager實(shí)現(xiàn)滑動翻頁效果實(shí)例代碼
實(shí)現(xiàn)ViewPager的滑動翻頁效果可以使用ViewPager的setPageTransformer方法,如下:
import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.View; public class ReadViewPager extends ViewPager { public ReadViewPager(Context context) { super(context); } public ReadViewPager(Context context, AttributeSet attrs) { super(context, attrs); setAnima(); } public void setAnima() { setPageTransformer(true, new PageTransformer() { private static final float MIN_SCALE = 0.75f; @Override public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight =view.getHeight(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); } else if (position <= 1) { // (0,1] // Fade the page out. view.setAlpha(1 - position); // // // Counteract the default slide transition // view.setAlpha(1); view.setTranslationX(pageWidth * -position); // // // Scale the page down (between MIN_SCALE and 1) float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } } }); } }
核心代碼是android官方demo,以上實(shí)現(xiàn)的是翻頁效果是:上面一頁被滑出界面時(shí),下面一頁慢慢顯現(xiàn),透明度慢慢加大,并且大小由小慢慢變大。
不過有一個(gè)奇怪的現(xiàn)象,當(dāng)我做一個(gè)答題界面時(shí),剛剛開始我采用ViewPager與View結(jié)合實(shí)現(xiàn)無限循環(huán)切換,并且采用上面的動畫效果,可是每當(dāng)我滑動到最后一張,也就是要開始新的一輪循環(huán)的時(shí)候,被滑出去的一頁也會出現(xiàn)慢慢變透明的情況,而我用ViewPager結(jié)合Fragment實(shí)現(xiàn)無限循環(huán)切換的是就不會出現(xiàn)這種效果
如果想要實(shí)現(xiàn)仿造駕考寶典的翻頁效果,只要把核心方法改為以下代碼便可以了
setPageTransformer(true, new PageTransformer() { private static final float MIN_SCALE = 0.75f; @Override public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight =view.getHeight(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); } else if (position <= 1) { // (0,1] // Fade the page out. // view.setAlpha(1 - position); // // // Counteract the default slide transition view.setAlpha(1); view.setTranslationX(pageWidth * -position); // // // Scale the page down (between MIN_SCALE and 1) // float scaleFactor = MIN_SCALE // + (1 - MIN_SCALE) * (1 - Math.abs(position)); // view.setScaleX(scaleFactor); // view.setScaleY(scaleFactor); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } } });
下面我們來講講position參數(shù):
position的可能性的值有:
[-Infinity,-1) 已經(jīng)看不到了
(1,+Infinity] 已經(jīng)看不到了
[-1,1]
重點(diǎn)看[-1,1]這個(gè)區(qū)間 , 其他兩個(gè)的View都已經(jīng)看不到了~~
假設(shè)現(xiàn)在ViewPager在A頁現(xiàn)在滑出B頁,則:
A頁的position變化就是( 0, -1]
B頁的position變化就是[ 1 , 0 ]
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android中圖片翻頁效果簡單的實(shí)現(xiàn)方法
- 解析Android中實(shí)現(xiàn)滑動翻頁之ViewFlipper的使用詳解
- Android實(shí)現(xiàn)閱讀APP平移翻頁效果
- Android自定義左右或上下滑動翻頁效果
- Android自定義ViewPager實(shí)現(xiàn)縱向滑動翻頁效果
- Android?ViewPager實(shí)現(xiàn)左右滑動翻頁效果
- 基于Android實(shí)現(xiàn)3D翻頁效果
- Android 仿日歷翻頁、仿htc時(shí)鐘翻頁、數(shù)字翻頁切換效果
- Android CardView+ViewPager實(shí)現(xiàn)ViewPager翻頁動畫的方法
- Android實(shí)現(xiàn)翻頁特效
相關(guān)文章
Flutter實(shí)現(xiàn)密碼強(qiáng)度校驗(yàn)結(jié)果的示例詳解
我們經(jīng)常在一些網(wǎng)站上看到這樣的密碼強(qiáng)度指示,使用三段線,分別用不同的顏色來表示弱密碼、中等強(qiáng)度密碼和強(qiáng)密碼,本篇我們就用?Flutter?來實(shí)現(xiàn)這樣一個(gè)密碼強(qiáng)度校驗(yàn)示例,希望對大家有所幫助2023-08-08Android RecyclerView上拉加載和下拉刷新(基礎(chǔ)版)
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView上拉加載和下拉刷新的相實(shí)現(xiàn)方法,內(nèi)容簡單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android源碼中final關(guān)鍵字的用法及final,finally,finalize的區(qū)別
Android的源碼中很多地方對final關(guān)鍵字的用法很是“別出心裁”,之所以這么說是因?yàn)槲覐臎]看過是這么使用final關(guān)鍵字的,通過本文給大家分享Android源碼中final關(guān)鍵字的用法及final,finally,finalize的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2015-12-12android 使用瀏覽器打開指定頁面的實(shí)現(xiàn)方法
這篇文章主要介紹了android 使用瀏覽器打開指定頁面的實(shí)現(xiàn)方法,本文通過實(shí)例文字說明的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能 Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁面
這篇文章主要為大家詳細(xì)介紹了Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能,Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android屬性動畫實(shí)現(xiàn)炫酷的登錄界面
這篇文章主要為大家詳細(xì)介紹了Android屬性動畫實(shí)現(xiàn)炫酷的登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Android實(shí)現(xiàn)定時(shí)器的3種方法
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)定時(shí)器的3種方法,感興趣的小伙伴們可以參考一下2016-07-07詳解Android App中的AsyncTask異步任務(wù)執(zhí)行方式
這篇文章主要介紹了Android App中的AsyncTask異步任務(wù)執(zhí)行方式,文中舉了一個(gè)打開網(wǎng)絡(luò)圖片的例子幫助大家直觀理解,需要的朋友可以參考下2016-04-04Android檢查手機(jī)有沒有安裝某應(yīng)用的方法
這篇文章主要介紹了Android檢查手機(jī)有沒有安裝某應(yīng)用的方法,分析總結(jié)了幾種常用的判斷技巧,涉及Android針對應(yīng)用程序包的相關(guān)讀取與判定技巧,需要的朋友可以參考下2016-08-08