Harmony/OpenHarmony应用开发-转场动画页面间转场

news2024/11/24 5:37:58

在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效。

说明从API Version 7开始支持。开发语言ets.

名称

参数

参数描述

PageTransitionEnter

{

type: RouteType,

duration: number,

curve: Curve | string,

delay: number

}

设置当前页面的自定义入场动效。

- type:不配置时表明pop为push时效果的逆播。

- duration:动画的时长,单位为毫秒。

- curve:动画曲线。string类型的取值支持"ease"、"ease-in"、"ease-out"、"ease-in-out"、"extreme-deceleration"、"fast-out-linear-in"、"fast-out-slow-in"、"friction"、"linear"、"linear-out-slow-in"、"rhythm"、"sharp"、"smooth"。

默认值:Curve.Linear

- delay:动画延迟时长,单位为毫秒,默认不延迟播放。

PageTransitionExit

{

type: RouteType,

duration: number,

curve: Curve | string,

delay: number

}

设置当前页面的自定义退场动效。

- type:不配置时表明pop为push时效果的逆播

- duration:动画的时长,单位为毫秒。

- curve:动画曲线,string类型取值与PageTransitionEnter相同。

默认值:Curve.Linear

- delay:动画延迟时长,单位为毫秒,默认不延迟播放。

routerType枚举说明:

名称

描述

Pop

重定向指定页面。PageA跳转到PageB时,PageA为Exit+Push,PageB为Enter+Push。

Push

跳转到下一页面。PageB返回至PageA时,PageA为Enter+Pop,PageB为Exit+Pop。

None

页面未重定向。

属性:

参数名称

参数类型

必填

参数描述

slide

SlideEffect

设置页面转场时的滑入滑出效果。

默认值:SlideEffect.Right

translate

{

x? : number | string,

y? : number | string,

z? : number | string

}

设置页面转场时的平移效果,为入场时起点和退场时终点的值,和slide同时设置时默认生效slide。

- x:横向的平移距离。

- y:纵向的平移距离。

- z:竖向的平移距离。

scale

{

x? : number,

y? : number,

z? : number,

centerX? : number | string,

centerY? : number | string

}

设置页面转场时的缩放效果,为入场时起点和退场时终点的值。

- x:横向放大倍数(或缩小比例)。

- y:纵向放大倍数(或缩小比例)。

- z:竖向放大倍数(或缩小比例)。

- centerX、centerY缩放中心点。

- 中心点为0时,默认的是组件的左上角。

opacity

number

设置入场的起点透明度值或者退场的终点透明度值。

默认值:1

SlideEffect枚举说明:

名称

描述

Left

设置到入场时表示从左边滑入,出场时表示滑出到左边。

Right

设置到入场时表示从右边滑入,出场时表示滑出到右边。

Top

设置到入场时表示从上边滑入,出场时表示滑出到上边。

Bottom

设置到入场时表示从下边滑入,出场时表示滑出到下边。

事件

功能描述

onEnter(event: (type?: RouteType, progress?: number) => void)

回调入参为当前入场动画的归一化进度[0 - 1]。

- type:跳转方法。

- progress:当前进度。

onExit(event: (type?: RouteType, progress?: number) => void)

回调入参为当前退场动画的归一化进度[0 - 1]。

- type:跳转方法。

- progress:当前进度。

代码实例:

transitionAnimation.ets

@Entry
@Component
struct TransitionAnimation {
  @State scale1: number = 1
  @State opacity1: number = 1

  build() {
    Column() {
      Navigator({ target: 'pages/transitionAnimation02', type: NavigationType.Push }) {
        Image($r('app.media.icon')).width(200).height(200)    // 图片存放在media文件夹下
      }
    }.scale({ x: this.scale1 }).opacity(this.opacity1)
  }
  // 自定义方式1:完全自定义转场过程的效果
  pageTransition() {
    PageTransitionEnter({ duration: 1200, curve: Curve.Linear })
      .onEnter((type: RouteType, progress: number) => {
        this.scale1 = 1
        this.opacity1 = progress
      }) // 进场过程中会逐帧触发onEnter回调,入参为动效的归一化进度(0% -- 100%)
    PageTransitionExit({ duration: 1500, curve: Curve.Ease })
      .onExit((type: RouteType, progress: number) => {
        this.scale1 = 1 - progress
        this.opacity1 = 1
      }) // 退场过程中会逐帧触发onExit回调,入参为动效的归一化进度(0% -- 100%)
  }
}复制

transitionAnimation02.ets

@Entry
@Component
struct TransitionAnimation02 {
  @State scale2: number = 1
  @State opacity2: number = 1

  build() {
    Column() {
      Navigator({ target: 'pages/transitionAnimation', type: NavigationType.Push }) {
        Image($r('app.media.widget')).width(200).height(200)   // 图片存放在media文件夹下
      }
    }.width('100%').height('100%').scale({ x: this.scale2 }).opacity(this.opacity2)
  }
  // 自定义方式1:完全自定义转场过程的效果
  pageTransition() {
    PageTransitionEnter({ duration: 1200, curve: Curve.Linear })
      .onEnter((type: RouteType, progress: number) => {
        this.scale2 = 1
        this.opacity2 = progress
      }) // 进场过程中会逐帧触发onEnter回调,入参为动效的归一化进度(0% -- 100%)
    PageTransitionExit({ duration: 1500, curve: Curve.Ease })
      .onExit((type: RouteType, progress: number) => {
        this.scale2 = 1 - progress
        this.opacity2 = 1
      }) // 退场过程中会逐帧触发onExit回调,入参为动效的归一化进度(0% -- 100%)
  }
}复制

示例效果:

 

参考地址:文档中心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1998-2014年企业绿色发展数据库

1998-2014年工业企业的排放排污和环境治理等信息数据 1、时间:1998-2014年 2、数据来源:原环保部。 3、统计字段:主要有企业基本信息、生产信息、水环境、大气环境,内容涵盖了资源利用类指标(工业用水量、煤炭消费量…

YGG 与 Thirdverse 达成合作,将《足球小将》IP 带入 Web3

YGG 与 Thirdverse 建立了合作关系,Thirdverse 是一家专注于多人 VR 和 Web3 游戏的游戏工作室,在日本和美国分别设有办事处。 YGG 通过购买未来股权的简单协议(SAFE)参与了 Thirdverse 近期的 1500 万美元融资。这种合作关系将使…

FastAPI从入门到实战(16)——依赖项

依赖注入是耳熟能详的一个词了,听起来很复杂,实际上并没那么复杂,正常的访问需要接受各种参数来构造一个对象,依赖注入就变成了只接收一个实例化对象,主要用于共享业务逻辑、共享数据库连接、实现安全、验证、权限等相…

原油投资怎么样赚钱?原油投资赚钱技巧有哪些?

以前没有交易过原油的投资者,看到其他投资者从中获得了较好的盈利,也想通过原油投资来赚钱。那么原油投资到底能不能赚钱,是很多新手投资者比较想了解的问题。其实原油投资想盈利并不能全部依靠运气,只有掌握了原油投资赚钱技巧&a…

【Java基础】Java日志—什么是日志级别?如何配置数据源到不同的位置?配置文件内容都是什么含义?

目录 一、log4j1详情:记录器和日志级别 二、 log4j1详情:输出源【输出到不同的位置】 1、ConsoleAppender【将日志输出到控制台】 2、FileAppender【将日志输出到文件】 3、DailyRollingFileAppender【每日输出到一个新文件】 4、JDBCAppender【输…

FineReport开源报表系统-JS实现切换Tab块时进行数据联动

1. 概述 1.1 预期效果 在决策报表中,希望 Tab 块轮播切换时,可实现与报表块的数据联动。如下图所示: 1.2 实现思路 通过 JS 获取每个 Tab 块的轮播标题,转换为参数值,再通过控件进行界面传参,实现联动效果…

程序员工作五年后一般会怎样?

最近看到一些吐血言论“一个程序员工作5年后还没成为大牛,是不是该考虑别的路子了?”还有“程序员入行五年,有可能攒够80吗?”不是,程序员工作五年,是戳中了谁的痛点吗??大家对五年经…

128页4万字某智慧能源集团数字化管理平台项目建议书

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除!完整资料领取见文末,部分资料内容: 方案设计 在当…

公司新来的软件测试工程师接私活被抓了,难怪他天天加班到凌晨

昨天和我一起进公司的测试部门同事上班接私活被老板抓了,这人才来不到两个月,每天加班到凌晨。刚开始还以为他是个卷王,没想到此人上班时间接单,用加班时间来完成公司需求,造成努力的假象。被老板在办公室骂了俩小时&a…

v$asm_disk中free_mb低于300m导致加盘报ora-15041

背景: 某项目扩容加盘到磁盘组中报磁盘组空间耗尽的错误,如下 明明是加盘,却报空间不足的错误,令人费解 报错的磁盘组为normal冗余,且Usable_file_MB为负,且Free_MB剩余很少或为0 问题排查: …

MS 训练笔记【2】:nnFormer

文章目录前言1. 安装2. 训练与测试2.1. 数据处理2.1.1. 整理数据路径2.1.2. 设置 nnFormer 读取文件的路径2.1.3. 数据集预处理2.2. 训练2.2.1. 训练代码2.2.2. 可能出现的问题及解决办法2.3. 预测总结前言 本文主要记载 nnFormer 从安装到训练再到推理的过程。nnFormer 的环境…

invokeBeanFactoryPostProcessors的理解

invokeBeanFactoryPostProcessors的理解 Spring中有两个非常重要的扩展点: BeanFactoryPostProcessorBeanPostProcessor 其中第一个是可以对BeanDefinition注册时进行扩展,而第二个是对spring中IOC容器中的对象进行实例化的时候进行扩展。 今天主要谈一…

【安全漏洞】水平权限漏洞和垂直权限漏洞

前言 权限校验非常重要。如果不对水平、垂直权限做校验,就会发生泄漏用户数据的事故,造成P0故障。 一、水平权限漏洞 1、水平权限漏洞基本概念 什么是水平权限漏洞呢? 简单来说,水平权限漏洞是用户CURD了本不属于他的资源。以上图…

复活天若OCR的谷歌翻译接口

文章目录1. 资源2. 效果3. 前言4. 网络相关4.1. 网络判断4.2. 网络设置5. 修改5.1. 代码修改原理5.2. 代码修改1. 资源 这里直接放出来我已经修改编译好的天若OCR,开箱即用:https://www.lanzoui.com/ifT8t0jfv1gd 访问码:24647 不过需要说明…

性能优化系列之如何为不同格式的图片选择合适的应用场景?

文章の目录一、JPEG(Joint Photographic Experts Group)1、介绍2、不适合情形3、非常适合的情形二、PNG(Portable Network Graphics)1、介绍2、不适合的情形3、非常适合的情形三、GIF(Graphics Interchange Format&…

【nowcoder】笔试强训Day9

目录 一、选择题 二、编程题 2.1另类加法 2.2走方格的方案数 一、选择题 1.下面程序的输出是:() String x"fmn"; x.toUpperCase(); String yx.replace(f,F); yy"wxy"; System.out.println(y); A FmNwxy B fmnwxy C wxyfmn D Fmnwxy String x “…

决胜「年货时代」:一场关于零食的品质突围

“都说冰糖葫芦儿酸,酸里面它裹着甜;都说冰糖葫芦儿甜,可甜里面它透着那酸。” 1995年春节,伴随着《冰糖葫芦》唱响大街小巷,小贩骑着自行车,后车座的草靶子上插满冰糖葫芦,或摆在集市上&#…

大数据系列——什么是hive?hive用来干什么的?hive常见问题是啥?

目录 一、什么是hive 二、为什么要使用Hive 三、Hive与Hadoop的关系 四、Hive与HDFS的关系 五、Hive与传统数据库区别 六、Hive中的数据存储是怎样的 七、对hive进行增删改查 八、排序逻辑 九、hive不支持update数据的解决方案 十、Hive中支持的分区类型有两种 十…

Linux部署前端Vue项目

Linux部署前端Vue项目 1 部署到tomcat上 1.1 部署Vue项目 打包项目 在命令行终端,输入命令,打包项目: npm run build将生成的dist文件夹下的所有内容复制到tomcat的webapps下 "推荐":在webapps下新建一个文件夹,例…

【互信息驱动:可逆神经网络】

Mutual Information-driven Pan-sharpening (互信息驱动的全色锐化) 全色锐化的目的是综合纹理丰富的全色图像和多光谱图像的互补信息,生成纹理丰富的多光谱图像。尽管已有的全色锐化方法取得了显著的进步,但它们并没有明确地加…