AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-05-30 09:08:38 186觀看
導讀PageTransformer是ViewPager內部定義的一個接口,用于控制ViewPager中頁面(item view)的滑動效果。PageTransformer可以在頁面滑動過程中自定義頁面的變換效果,如透明度漸變、縮放、旋轉等。接口定義PageTransformer接口定

PageTransformer是ViewPager內部定義的一個接口,用于控制ViewPager中頁面(item view)的滑動效果。PageTransformer可以在頁面滑動過程中自定義頁面的變換效果,如透明度漸變、縮放、旋轉等。SYg28資訊網——每日最新資訊28at.com

接口定義

PageTransformer接口定義了一個方法transformPage(View page, float position)SYg28資訊網——每日最新資訊28at.com

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

常見使用場景

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

實現方式

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

示例代碼

透明漸變效果

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

在transformPage方法中,根據position的絕對值來設置頁面的透明度,使頁面在滑動過程中透明度發生變化。SYg28資訊網——每日最新資訊28at.com

透明旋轉翻頁效果

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效果。SYg28資訊網——每日最新資訊28at.com

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

圖片圖片SYg28資訊網——每日最新資訊28at.com

SYg28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-91682-0.htmlViewPager頁面滑動效果,自定義PageTransformer實現想要的變換效果

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Spring Boot中的六種API請求參數讀取方式

下一篇: 聊聊什么是微服務,你看明白了嗎?

標簽:
  • 熱門焦點
  • 官方承諾:K60至尊版將會首批升級MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會搭載天璣9200+處理器和獨顯芯片X7的同時,Redmi給出了官方承諾,K60至尊重大更新首批升級,會首批推送MIUI 15。也就是說雖然
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰略發布會今天下午如期舉辦,在本次發布會上,Redmi公布了多項關于和聯發科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業發布的ESG報告。ESG是&ldquo;環境保
  • 攜眾多高端產品亮相ChinaJoy,小米帶來一場科技與人文的視聽盛宴

    7月28日,全球數字娛樂領域最具知名度與影響力的年度盛會中國國際數碼互動娛樂展覽會(簡稱ChinaJoy)在上海新國際博覽中心盛大開幕。作為全球領先的科
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
Top