成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ViewPager頁面滑動效果,自定義PageTransformer實現想要的變換效果

開發 前端
創建一個類并實現PageTransformer接口,重寫transformPage(View page, float position)?方法。根據position?參數的值來更改page視圖的屬性,如透明度、大小、旋轉角度等,以達到自定義的滑動效果。

PageTransformer是ViewPager內部定義的一個接口,用于控制ViewPager中頁面(item view)的滑動效果。PageTransformer可以在頁面滑動過程中自定義頁面的變換效果,如透明度漸變、縮放、旋轉等。

接口定義

PageTransformer接口定義了一個方法transformPage(View page, float position)

  • page:表示當前正在滑動的頁面視圖。
  • position:表示頁面相對于當前中心頁面的位置,值是一個浮點數,范圍根據滑動方向有所不同。例如,當向左滑動時,當前頁面的position值變化為[0~-1],右邊頁面的position值變化為[1~0];向右滑動時,當前頁面的position值變化為[0~1],左邊頁面的position值變化為[-1~0]。

常見使用場景

  • 「透明度漸變」:在頁面滑動過程中改變頁面的透明度,實現淡入淡出效果。
  • 「縮放」:在頁面滑動過程中改變頁面的大小,實現縮放效果。
  • 「旋轉」:在頁面滑動過程中改變頁面的旋轉角度,實現旋轉效果。

實現方式

創建一個類并實現PageTransformer接口,重寫transformPage(View page, float position)方法。根據position參數的值來更改page視圖的屬性,如透明度、大小、旋轉角度等,以達到自定義的滑動效果。

示例代碼

透明漸變效果

public class AlphaPageTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(@NonNull View page, float position) {
        page.setAlpha(1 - Math.abs(position));
    }
}

在transformPage方法中,根據position的絕對值來設置頁面的透明度,使頁面在滑動過程中透明度發生變化。

透明旋轉翻頁效果

public class RotatePageTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(@NonNull View page, float position) {
        int pagerWidth = mViewPager.getWidth();
        float horizontalOffsetBase = (pagerWidth - pagerWidth * 1.2f) / 2 / offscreenPageLimit + 45;

        if (position >= offscreenPageLimit || position <= -1) {
            page.setVisibility(View.GONE);
        } else {
            page.setVisibility(View.VISIBLE);
        }

        if (position >= 0) {
            float translationX = (horizontalOffsetBase - page.getWidth()) * position;
            page.setTranslationX(translationX);
        }
        if (position > -1 && position < 0) {
            float rotation = position * 30;
            page.setRotation(rotation);
            page.setAlpha((position * position * position + 1));
        } else if (position > offscreenPageLimit - 1) {
            page.setAlpha((float) (1 - position + Math.floor(position)));
        } else {
            page.setRotation(0);
            page.setAlpha(1);
        }
        if (position == 0) {
            page.setScaleX(1.2f);
            page.setScaleY(1.2f);
        } else {
            float scaleFactor = Math.min(1.2f - position * 0.1f, 1.2f);
            page.setScaleX(scaleFactor);
            page.setScaleY(scaleFactor);
        }

        ViewCompat.setElevation(page, (offscreenPageLimit - position) * 5);
    }
}

調用ViewPager的setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer)方法,設置實現的PageTransformer效果。

ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setPageTransformer(true, new RotatePageTransformer());

圖片圖片

責任編輯:武曉燕 來源: 沐雨花飛蝶
相關推薦

2013-01-06 10:43:54

Android開發View特效

2012-06-14 15:49:59

Slider

2013-03-28 10:58:30

自定義Android界android

2021-09-14 15:13:18

鴻蒙HarmonyOS應用

2009-09-03 16:50:35

C#鼠標形狀

2010-04-28 11:14:20

Windows 7桌面

2011-02-17 10:54:59

CSS3變換 簡單快捷

2017-04-21 14:27:21

Android控件QQ未讀消息

2013-01-14 17:18:43

Android開發TextView跑馬燈效果

2009-09-23 17:19:19

jQuery頁面漸顯效

2010-01-13 16:52:03

VB.NET導出數據

2011-05-31 09:23:58

Android Activity

2012-06-01 10:12:39

2024-05-11 08:25:43

自定義分隔線背景效果

2023-10-11 08:14:43

iPhoneTabs標簽頁

2015-01-22 16:04:06

iPhone

2023-10-30 08:35:50

水波紋效果vue

2009-09-07 22:00:15

LINQ自定義

2022-05-18 07:44:13

自定義菜單前端

2011-07-08 10:15:15

IPhone 動畫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片入口 | 国产精品久久久久久久久久了 | 久久乐国产精品 | 日韩成人免费在线视频 | 久久精品久久综合 | 日韩国产在线 | 日本网站免费在线观看 | 三区四区在线观看 | 99久久99热这里只有精品 | 一级电影免费看 | 国内久久精品 | 99精品久久久 | 精品国产一级 | av手机免费在线观看 | 日韩毛片播放 | 亚洲一区二区av | 一级毛片视频在线观看 | 国产精品久久九九 | 请别相信他免费喜剧电影在线观看 | 亚洲福利 | 欧美精品二区 | 国产我和子的乱视频网站 | 91国在线 | 亚洲日日| 亚洲精品视频免费观看 | av看看| 欧美a在线 | 成人老司机| 精品国产欧美一区二区三区成人 | 日本精品999| 国产精品高潮呻吟久久 | 国产精品久久久久久久久久久久久久 | 香蕉一区二区 | 欧美日韩电影一区二区 | 成人网址在线观看 | 超碰在线人人 | 国产欧美性成人精品午夜 | 久久99精品视频 | 99精品一区二区 | 天天爽夜夜操 | 人人亚洲|