赞
踩
【关键字】
ArkTS、转场动画、PageTransitionEnter、PageTransitionExit
【介绍】
动画交互的实现是一种提升用户体验的方式。动画分为属性属性动画、显示动画、转场动画和路径动画,而转场动画又包含页面间转场、组件内转场和共享元素转场。我觉得页面转场动画挺有趣的,所以今天就浅浅的给大家分享一个用ArkTS实现页面转场动画的demo。
ArkTS是通过在全局pageTransition方法内配置页面入场(PageTransitionEnter)和页面退场(PageTransitionExit)时的自定义转场动效来实现页面转场动画的,下图是关于PageTransitionEnter和PageTransitionExit的说明
PageTransitionEnter和PageTransitionExit分别支持以下两种方法
PageTransitionEnter和PageTransitionExit共同支持以下属性:
【成果展示】
我们先来看最终的实现成果:
由于不支持上传视频,放附件了,感兴趣的同学可点开附件查看。
第一个页面的代码:
- @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
- })
- }
- }
【效果展示】
以上就是我的分享啦!
【相关参考】
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。