android ViewPager實現(xiàn)滑動翻頁效果實例代碼
實現(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,以上實現(xiàn)的是翻頁效果是:上面一頁被滑出界面時,下面一頁慢慢顯現(xiàn),透明度慢慢加大,并且大小由小慢慢變大。
不過有一個奇怪的現(xiàn)象,當我做一個答題界面時,剛剛開始我采用ViewPager與View結(jié)合實現(xiàn)無限循環(huán)切換,并且采用上面的動畫效果,可是每當我滑動到最后一張,也就是要開始新的一輪循環(huán)的時候,被滑出去的一頁也會出現(xiàn)慢慢變透明的情況,而我用ViewPager結(jié)合Fragment實現(xiàn)無限循環(huán)切換的是就不會出現(xiàn)這種效果
如果想要實現(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]
重點看[-1,1]這個區(qū)間 , 其他兩個的View都已經(jīng)看不到了~~
假設(shè)現(xiàn)在ViewPager在A頁現(xiàn)在滑出B頁,則:
A頁的position變化就是( 0, -1]
B頁的position變化就是[ 1 , 0 ]
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android中圖片翻頁效果簡單的實現(xiàn)方法
- 解析Android中實現(xiàn)滑動翻頁之ViewFlipper的使用詳解
- Android實現(xiàn)閱讀APP平移翻頁效果
- Android自定義左右或上下滑動翻頁效果
- Android自定義ViewPager實現(xiàn)縱向滑動翻頁效果
- Android?ViewPager實現(xiàn)左右滑動翻頁效果
- 基于Android實現(xiàn)3D翻頁效果
- Android 仿日歷翻頁、仿htc時鐘翻頁、數(shù)字翻頁切換效果
- Android CardView+ViewPager實現(xiàn)ViewPager翻頁動畫的方法
- Android實現(xiàn)翻頁特效
相關(guān)文章
Flutter實現(xiàn)密碼強度校驗結(jié)果的示例詳解
我們經(jīng)常在一些網(wǎng)站上看到這樣的密碼強度指示,使用三段線,分別用不同的顏色來表示弱密碼、中等強度密碼和強密碼,本篇我們就用?Flutter?來實現(xiàn)這樣一個密碼強度校驗示例,希望對大家有所幫助2023-08-08
Android RecyclerView上拉加載和下拉刷新(基礎(chǔ)版)
這篇文章主要為大家詳細介紹了Android RecyclerView上拉加載和下拉刷新的相實現(xiàn)方法,內(nèi)容簡單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Android源碼中final關(guān)鍵字的用法及final,finally,finalize的區(qū)別
Android的源碼中很多地方對final關(guān)鍵字的用法很是“別出心裁”,之所以這么說是因為我從沒看過是這么使用final關(guān)鍵字的,通過本文給大家分享Android源碼中final關(guān)鍵字的用法及final,finally,finalize的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2015-12-12
android 使用瀏覽器打開指定頁面的實現(xiàn)方法
這篇文章主要介紹了android 使用瀏覽器打開指定頁面的實現(xiàn)方法,本文通過實例文字說明的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06
Android利用CountDownTimer實現(xiàn)倒計時功能 Android實現(xiàn)停留5s跳轉(zhuǎn)到登錄頁面
這篇文章主要為大家詳細介紹了Android利用CountDownTimer實現(xiàn)倒計時功能,Android實現(xiàn)停留5s跳轉(zhuǎn)到登錄頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
詳解Android App中的AsyncTask異步任務(wù)執(zhí)行方式
這篇文章主要介紹了Android App中的AsyncTask異步任務(wù)執(zhí)行方式,文中舉了一個打開網(wǎng)絡(luò)圖片的例子幫助大家直觀理解,需要的朋友可以參考下2016-04-04

