【HarmonyOS】ArkTS学习之页面转场动画的实现

news2024/10/7 6:46:27

【关键字】
ArkTS、转场动画、PageTransitionEnter、PageTransitionExit

【介绍】
动画交互的实现是一种提升用户体验的方式。动画分为属性属性动画、显示动画、转场动画和路径动画,而转场动画又包含页面间转场、组件内转场和共享元素转场。我觉得页面转场动画挺有趣的,所以今天就浅浅的给大家分享一个用ArkTS实现页面转场动画的demo。
ArkTS是通过在全局pageTransition方法内配置页面入场(PageTransitionEnter)和页面退场(PageTransitionExit)时的自定义转场动效来实现页面转场动画的,下图是关于PageTransitionEnter和PageTransitionExit的说明

cke_3236.png​​​​

PageTransitionEnter和PageTransitionExit分别支持以下两种方法

cke_5249.png​​

PageTransitionEnter和PageTransitionExit共同支持以下属性:

  • slide:设置页面转场时的滑入滑出效果。默认值:SlideEffect.Right。
  • translate:设置页面转场时的缩放效果,为入场时起点和退场时终点的值。
  • opacity:设置入场的起点透明度值或者退场的终点透明度值,默认值:1。
  • scale:设置页面转场时的缩放效果,为入场时起点和退场时终点的值。
    更多的使用请参考文章底部的相关参考部分。

【成果展示】

我们先来看最终的实现成果:
由于不支持上传视频,放附件了,感兴趣的同学可点开附件查看。
第一个页面的代码:

@Entry
@Component
struct PageTransitionExample1 {
  @State scale1: number = 1  // 默认放缩比例
  @State opacity1: number = 1   // 默认不透明度

  build() {
    Column() {
       // 用路由容器组件来实现跳转
      Navigator({ target: 'pages/Page2', type: NavigationType.Push }) {  // 设置指定跳转目标页面的路径和路由方式
        Image('Common/image/img.png').width('100%').height('100%')
      }
    }.scale({ x: this.scale1 }).opacity(this.opacity1)
  }
  // 添加全局pageTransition方法
  pageTransition() {
    PageTransitionEnter({ duration: 2000, curve: Curve.Linear }) // 设置当前页面入场动画的配置信息:执行时间和动画曲线
      .opacity(0.3)   // 设置入场的起点透明度值或者退场的终点透明度值
      .slide(SlideEffect.Top) // 设置页面转场时的滑入滑出效果
      .onEnter((type: RouteType, progress: number) => { // 每一帧的动画事件回调
        this.scale1 = 1
        this.opacity1 = progress
      }) 
    PageTransitionExit({ duration: 2000, curve: Curve.Ease }) // 设置当前页面退场动画的配置信息:执行时间和动画曲线
      .translate({x: 10, y: 20, z: 30})
      .scale({x: 0.5, y: 0.5, z: 0.5,})
      .onExit((type: RouteType, progress: number) => { // 每一帧的动画事件回调
        this.scale1 = 1 - progress
        this.opacity1 = 1- progress
      })
  }
}

第二个页面的代码:

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

  build() {
    Column() {
      Navigator({ target: 'pages/index', type: NavigationType.Push }) {
        Image('Common/image/mdh.jpeg').width('100%').height('100%')
      }
    }.width('100%').height('100%').scale({ x: this.scale2 }).opacity(this.opacity2)
  }
  pageTransition() {
    PageTransitionEnter({
      type: RouteType.Push,
      duration: 1200,
      curve: Curve.Linear,
      delay: 1000
    }) .opacity(0.3)   // 设置入场的起点透明度值或者退场的终点透明度值
      .slide(SlideEffect.Bottom) // 设置页面转场时的滑入滑出效果
      .onEnter((type: RouteType, progress: number) => {
        // console.log(progress + 'progress');
        this.scale2 = 1
        this.opacity2 = progress
      })
    PageTransitionExit({
      duration: 2000,
      curve: Curve.Ease,
      type: RouteType.Pop,
      delay: 1000
    })
      .scale({x: 0.5, y: 0.5, z: 0.5,})
      .translate({x: 10, y: 20, z: 30})
      // .slide(SlideEffect.Right)
      .onExit((type: RouteType, progress: number) => {
        this.scale2 = 1 - progress
        this.opacity2 = 1 - progress
      })
  }
}

【效果展示】

GIF2.gif

以上就是我的分享啦!

【相关参考】
1、路由组件使用:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-container-navigator-0000001427584884-V3

2、转场动画实现:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-page-transition-animation-0000001477981233-V3

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

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

相关文章

电机的调压调速和PWM调速方法的性能比较、应用场景简介

电机的调压调速和PWM调速是两种不同的电机控制方式。 调压调速:调压调速是通过改变电机输入电压的大小来控制电机的转速和扭矩。通过调节电压,可以改变电机的转矩特性和转速。这种调速方式适用于直流电机和某些类型的交流电机,如感应电动机。…

Windows电源模式(命令行)

一、简介 windows使用powercfg.exe来控制电源方案,像cmd.exe一样,powercfg.exe也是windows自带的。 powercfg命令行选项 选项说明/?、-help显示有关命令行参数的信息。/list、/L列出所有电源方案。/query、/Q显示电源方案的内容。

华为云CodeArts DevSecOps系列插件——助力更高效的软件研发

HDC期间入驻华为云,可参与Toolkit插件抽奖活动,活动链接在文末 一、前言 DevOps的概念想必大家都不陌生,它是一组过程、方法与系统的统称,通过它可以对交付速率、协作效率、部署频率速率、质量、安全和可靠性等进行提升改善。相比…

Linux——信号发送代码

目录 一.信号集操作函数 sigpromask函数 代码详解: ​编辑 考虑情况一:对多个信号的屏蔽 考虑情况二:取消对信号的阻塞 运行结果: 考虑情况三:若不想让进程退出,采用自定义捕捉信号方式!…

Java阶段五Day02

Java阶段五Day02 文章目录 Java阶段五Day02MAVEN-聚合(多模块3)回顾多模块2个特性依赖:继承: 聚合场景聚合目的实现聚合聚合总结 远程仓库远程仓库概念配置settings.xml远程库配置注意事项 GIT详细学习git概括git历史本地版本控制相关命令git分支管理分支管理基本概念分支管理相…

axios请求错误处理Uncaught runtime errors:handleError@webpack-internal:///./node_modules/webpack-dev-server

项目环境: vue3.2.13 vue-cli5.0.0 注:该问题只是出现在开发环境,打包后是不会出现的。 问题描述: 由于需要新开一个开发项目,引入必备网络请求axios及他的副手(集中处理请求及返回数据)&a…

springboot+MySQL大学生体质测试管理系统

功能需求分析的任务是通过详细调查大学生体质测试的测试信息管理系统要处理的所有对象,通过充分了解大学生体质测试管理系统的工作流程,明确使用者的各种需求,充分思考之后可能扩充和改变的情况,然后在这个基础上来设计数据库。

C#(五十九)之三种数据结构 stack queue sortedList

堆栈(Stack): 代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。 Stack 类的方法和…

UVM中transaction中数据持续时间的控制

一、代码 首先需要确认持续时间是在driver中进行控制 其中data_size就是数据的持续时钟周期个数

如何看待中国工业MES系统的发展现状?

如何看待中国工业MES系统的发展现状? MES系统在中国工厂推进是否举步维艰,MES系统是否多数华而不实?中国工业化的前途在何方? 什么是MES—— 制造执行系统(MES)一种用于监控、控制和优化制造过程的软件系统…

多元回归预测 | Matlab基于粒子群算法(PSO)优化高斯过程回归(PSO-GPR)的数据回归预测,matlab代码,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于粒子群算法(PSO)优化高斯过程回归(PSO-GPR)的数据回归预测,matlab代码,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分…

【node】借助百度智能云,识别并提取图片中的文字

效果图: 一、对接百度智能云 登录百度智能云:百度智能云-云智一体深入产业 新用户可以免费体验,按照下面来就行: 创建应用之后就会有密钥啥的了 二、在node项目中安装依赖并使用 所有依赖如下: "baidu-aip-sdk…

Python中的*args和**kwargs:无限可能的函数参数详解

概要 在 Python 编程中,*args 和 **kwargs 是常用的两个特殊参数,用于处理不确定数量的函数参数。它们提供了一种灵活的方式来传递和接收参数,使函数的定义更加通用。本文将详细介绍 *args 和 **kwargs 的使用方法,并提供相关代码…

UnityVR--机械臂场景9-简单流水线应用1

目录 一. 整体介绍 二. 准备工作 三. 建立流水线 1. 流水线包含的功能: 2. 流水线的代码结构 3. 场景实现 4. 测试运行 一. 整体介绍 流水线是在空间和时间上合理安排和组织工艺线路的一种形式,它涉及到一种或多种生产设备、传感器、物料传输设备等&…

企业微信群机器人开发

准备工作 已经注册了有效的企业微信账号,并且在客户端上已经登录现有或者新建有效的包含多名企业微信成员的群聊 创建群聊机器人 右键群聊->管理聊天信息->添加群机器人 使用群机器人 在终端某个群组添加机器人之后,创建者可以在机器人详情页…

【Unity天空盒的制作及使用】使用HDR图或六面图制作天空盒及天空盒的几种使用方式

前言【Unity天空盒的制作及使用】使用HDR图或六面图制作天空盒及天空盒的几种使用方式一 、制作天空盒材质1.1 使用HDR文件1.2 使用六张图片二、天空盒的使用方式2.1 场景中设置天空盒2.2 相机中设置天空盒总结前言 Unity工程中每次打开工程映入眼帘的蓝灰过渡的画面就是Unity默…

随笔 --- 是否可以用左右子树结点数差来衡量二叉树是否平衡?

这道题目来自mooc上浙江大学由陈越 、何钦铭老师主讲的数据结构课程上。 题目如下: 由于评论区关闭,在这里写下我自己的思路: 根据要求使用结点数来衡量是否是平衡时,极端条件是NR 2NL 或者反之。 如果构建二叉树时恰好构建为斜…

xxl-job使用详解(包含部分踩坑信息)

概念 XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 分布式下,每个服务都可以搭建为集群,这样的好处是可以将任务切片分给每一个服务从而实现并行执行,提高任务调度的处理效率。 在…

你真的会CSS?来看看这几个效果怎么做!

最近阿锋在超市排队买菜(辣条) 一个大叔一边给孩子买吃的一边说: 这些都是增加记忆力的,对孩子好! 蓝莓,深海鱼,全麦面包,坚果儿,十六个核桃 不禁感叹现在的孩子们还真是…

6个美化代码片段转换截图图片在线工具推荐

有些截图的代码片段不是太美观,我们可以用统一的代码片段美化截图工具: 文章目录: 1、Codeimg 2.、Carbon 3、Ray.so 4、CodeKeep 5、Chalk.ist 6、Codepng Codeimg 支持设置设备系统,比如可选 MacOs、Windows系统样式。以及设置…