当前位置:首页 > 科技  > 软件

ViewPager页面滑动效果,自定义PageTransformer实现想要的变换效果

来源: 责编: 时间:2024-05-30 09:08:38 286观看
导读PageTransformer是ViewPager内部定义的一个接口,用于控制ViewPager中页面(item view)的滑动效果。PageTransformer可以在页面滑动过程中自定义页面的变换效果,如透明度渐变、缩放、旋转等。接口定义PageTransformer接口定

PageTransformer是ViewPager内部定义的一个接口,用于控制ViewPager中页面(item view)的滑动效果。PageTransformer可以在页面滑动过程中自定义页面的变换效果,如透明度渐变、缩放、旋转等。fUU28资讯网——每日最新资讯28at.com

接口定义

PageTransformer接口定义了一个方法transformPage(View page, float position)fUU28资讯网——每日最新资讯28at.com

  • page:表示当前正在滑动的页面视图。
  • position:表示页面相对于当前中心页面的位置,值是一个浮点数,范围根据滑动方向有所不同。例如,当向左滑动时,当前页面的position值变化为[0~-1],右边页面的position值变化为[1~0];向右滑动时,当前页面的position值变化为[0~1],左边页面的position值变化为[-1~0]。

常见使用场景

  • 「透明度渐变」:在页面滑动过程中改变页面的透明度,实现淡入淡出效果。
  • 「缩放」:在页面滑动过程中改变页面的大小,实现缩放效果。
  • 「旋转」:在页面滑动过程中改变页面的旋转角度,实现旋转效果。

实现方式

创建一个类并实现PageTransformer接口,重写transformPage(View page, float position)方法。根据position参数的值来更改page视图的属性,如透明度、大小、旋转角度等,以达到自定义的滑动效果。fUU28资讯网——每日最新资讯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的绝对值来设置页面的透明度,使页面在滑动过程中透明度发生变化。fUU28资讯网——每日最新资讯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效果。fUU28资讯网——每日最新资讯28at.com

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

图片图片fUU28资讯网——每日最新资讯28at.com

fUU28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-91682-0.htmlViewPager页面滑动效果,自定义PageTransformer实现想要的变换效果

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Spring Boot中的六种API请求参数读取方式

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

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己&ldquo;当家&rdquo;的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 苹果公司要求三星和LG Display生产「无边框」OLED iPhone显示屏

    据 The Elec 报道,苹果已要求其供应商为未来的 iPhone 型号开发「无边框」OLED 显示面板。苹果显然已要求三星和 LG Display 开发新的 OLED 显示面
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
Top