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

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

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

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

接口定义

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

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

常见使用场景

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

实现方式

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 印度登月最关键一步!月船三号今晚进入环月轨道

    8月5日消息,据印度官方消息,月船三号将于北京时间今晚21时30分左右开始近月制动进入环月轨道。这是该探测器能够成功的最关键步骤之一,如果成功将开始围
  • 十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
  • 华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    北京时间2月27日晚,华为在巴塞罗那举行春季智慧办公新品发布会,在海外市场推出之前已经在中国市场上市的笔记本、平板、激光打印机等办公产品,并首次推出搭载
Top