成人免费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桌面

2017-04-21 14:27:21

Android控件QQ未讀消息

2011-02-17 10:54:59

CSS3變換 簡單快捷

2009-09-23 17:19:19

jQuery頁面漸顯效

2013-01-14 17:18:43

Android開發TextView跑馬燈效果

2010-01-13 16:52:03

VB.NET導出數據

2012-06-01 10:12:39

2011-05-31 09:23:58

Android Activity

2024-05-11 08:25:43

自定義分隔線背景效果

2023-10-11 08:14:43

iPhoneTabs標簽頁

2015-01-22 16:04:06

iPhone

2009-09-07 22:00:15

LINQ自定義

2011-07-08 10:15:15

IPhone 動畫

2023-10-30 08:35:50

水波紋效果vue

2022-05-18 07:44:13

自定義菜單前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.日韩 | 久久综合久久久 | 五月精品视频 | 午夜国产一区 | 欧美精品video | 久久久久成人精品亚洲国产 | 国产一级成人 | 99精品视频免费观看 | 欧美激情在线精品一区二区三区 | 成人毛片在线视频 | 日韩福利片 | 97视频免费 | 久久久久久综合 | a国产一区二区免费入口 | 国产亚洲区 | av一二三区| 成人av网站在线观看 | 欧美aⅴ| 欧美精品一区二区蜜桃 | 天堂视频一区 | 久久久视 | 久久精品亚洲精品国产欧美 | 久久久久精 | 国产在线一区观看 | 国产高清免费视频 | www.天天干.com | 国产精品久久精品 | 国产夜恋视频在线观看 | 精品久久久久久久久久 | 成人小视频在线 | 久久一二三区 | 精品久久久久久亚洲精品 | 国产精品美女久久久久aⅴ国产馆 | 超碰超碰 | 精品国产不卡一区二区三区 | 91在线导航 | 紧缚调教一区二区三区视频 | 天天插天天射天天干 | 人人鲁人人莫人人爱精品 | 欧美 日韩 中文 | 九七午夜剧场福利写真 |