Android viewpager 3D畫(huà)廊的實(shí)現(xiàn)方法
ViewPager有個(gè)方法叫做:
setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer)
用于設(shè)置ViewPager切換時(shí)的動(dòng)畫(huà)效果。
這里我們只要自定義一個(gè)PageTransformer來(lái)實(shí)現(xiàn)我們需要的動(dòng)畫(huà)偏移效果就好了!
public class ScrollOffsetTransformer implements PageTransformer {
private static final float MIN_SCALE = 0.85F;
/**
* position參數(shù)指明給定頁(yè)面相對(duì)于屏幕中心的位置。它是一個(gè)動(dòng)態(tài)屬性,會(huì)隨著頁(yè)面的滾動(dòng)而改變。
* 當(dāng)一個(gè)頁(yè)面(page)填充整個(gè)屏幕時(shí),positoin值為0; 當(dāng)一個(gè)頁(yè)面(page)剛剛離開(kāi)屏幕右(左)側(cè)時(shí),position值為1(-1);
* 當(dāng)兩個(gè)頁(yè)面分別滾動(dòng)到一半時(shí),其中一個(gè)頁(yè)面是-0.5,另一個(gè)頁(yè)面是0.5。
* 基于屏幕上頁(yè)面的位置,通過(guò)諸如setAlpha()、setTranslationX
* ()或setScaleY()方法來(lái)設(shè)置頁(yè)面的屬性,創(chuàng)建自定義的滑動(dòng)動(dòng)畫(huà)。
*/
@Override
public void transformPage(View view, float position) {
// TODO Auto-generated method stub
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float rotate = 30 * Math.abs(position);
float transla = 50 * Math.abs(position);
if (position > 0) {
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
view.setRotationY(-rotate);
view.setTranslationX(-transla);
} else {
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
view.setRotationY(rotate);
view.setTranslationX(transla);
}
}
}
然后
viewPager
加上
viewPager.setPageTransformer(true, new ScrollOffsetTransformer())
以上所述是小編給大家介紹的Android viewpager 3D畫(huà)廊的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
利用SurfaceView實(shí)現(xiàn)下雨與下雪動(dòng)畫(huà)效果詳解(Kotlin語(yǔ)法)
這篇文章主要給大家介紹了關(guān)于利用SurfaceView實(shí)現(xiàn)下雨與下雪動(dòng)畫(huà)效果的相關(guān)資料,需要一些基本的View知識(shí)和會(huì)一些基礎(chǔ)Kotlin語(yǔ)法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
android在連拍菜單中增加連拍張數(shù)選項(xiàng)功能實(shí)現(xiàn)代碼
想要增加連拍張數(shù)選項(xiàng)需要在entries, entryvalues中添加兩項(xiàng),同時(shí)在mtk_strings.xml中添加相應(yīng)的字符串,具體如下,感興趣的朋友可以參考下哈2013-06-06
Android實(shí)現(xiàn)ViewFlipper圖片動(dòng)畫(huà)滑動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)ViewFlipper圖片動(dòng)畫(huà)滑動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android中Paint類(lèi)和Canvas類(lèi)的方法匯總
本文主要介紹了Android中Paint類(lèi)和Canvas類(lèi)的方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
解析后臺(tái)進(jìn)程對(duì)Android性能影響的詳解
本篇文章是對(duì)Android中后臺(tái)進(jìn)程對(duì)Android性能的影響進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Android編寫(xiě)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲(chóng)
網(wǎng)絡(luò)爬蟲(chóng)是捜索引擎抓取系統(tǒng)的重要組成部分。爬蟲(chóng)的主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁(yè)下載到本地形成一個(gè)或聯(lián)網(wǎng)內(nèi)容的鏡像備份。本文的主要內(nèi)容是講在Android中如何編寫(xiě)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲(chóng)。2016-07-07
詳解Flutter自定義應(yīng)用程序內(nèi)鍵盤(pán)的實(shí)現(xiàn)方法
本文將展示如何利用Flutter創(chuàng)建自定義鍵盤(pán)小部件,用于在自己的應(yīng)用程序中的Flutter TextField中輸入文本,感興趣的小伙伴可以了解一下2022-06-06

