ArkTS-页面转场动画

在这里插入图片描述

页面转场动画

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

两个页面间发生跳转,一个页面消失,另一个页面出现,这时可以配置各自页面的页面转场参数实现自定义的页面转场效果。页面转场效果写在pageTransition函数中,通过PageTransitionEnterPageTransitionExit指定页面进入和退出的动画效果。

TransitionPage1

import router from '@ohos.router'
@Entry
@Component
struct TransitionPage1 {
  @State scaleValue: number = 1
  @State opacityValue: number = 1

  build() {
    Column() {
      Image($r('app.media.pic1'))
        .width('100%')
        .height('100%')
        .scale({ x: this.scaleValue })
        .opacity(this.opacityValue)
    }
    .width('100%')
    .height('100%')
    .onClick(() => {
      router.pushUrl({
        url:'pages/TransitionPage2'
      })
    })
  }

  pageTransition() {
    PageTransitionEnter({}).onEnter((type: RouteType, progress: number) => {
      this.scaleValue = 1
      this.opacityValue = progress
    })
    PageTransitionExit({}).onExit((type: RouteType, progress: number) => {
      this.scaleValue = 1 - progress
      this.opacityValue = 1 - progress
    })
  }
}

TransitionPage2

import router from '@ohos.router'
@Entry
@Component
struct TransitionPage2 {
  @State scaleValue: number = 1
  @State opacityValue: number = 1

  build() {
    Column() {
      Image($r('app.media.pic2'))
        .width('100%')
        .height('100%')
        .scale({ x: this.scaleValue })
        .opacity(this.opacityValue)
    }
    .width('100%')
    .height('100%')
    .onClick(() => {
      router.back()
    })
  }

  pageTransition() {
    PageTransitionEnter({}).onEnter((type: RouteType, progress: number) => {
      this.scaleValue = progress
      this.opacityValue = progress
    })
    PageTransitionExit({}).onExit((type: RouteType, progress: number) => {
      this.scaleValue = 1 - progress
      this.opacityValue = 1 - progress
    })
  }
}

type配置为RouteType.None

type为RouteType.None表示对页面栈的push、pop操作均生效,type的默认值为RouteType.None。

// page A
pageTransition() {
  // 定义页面进入时的效果,从左侧滑入,时长为1200ms,无论页面栈发生push还是pop操作均可生效
  PageTransitionEnter({ type: RouteType.None, duration: 1200 })
    .slide(SlideEffect.Left)
  // 定义页面退出时的效果,向左侧滑出,时长为1000ms,无论页面栈发生push还是pop操作均可生效
  PageTransitionExit({ type: RouteType.None, duration: 1000 })
    .slide(SlideEffect.Left)
}
// page B
pageTransition() {
  // 定义页面进入时的效果,从右侧滑入,时长为1000ms,无论页面栈发生push还是pop操作均可生效
  PageTransitionEnter({ type: RouteType.None, duration: 1000 })
    .slide(SlideEffect.Right)
  // 定义页面退出时的效果,向右侧滑出,时长为1200ms,无论页面栈发生push还是pop操作均可生效
  PageTransitionExit({ type: RouteType.None, duration: 1200 })
    .slide(SlideEffect.Right)
}

禁用某页面的页面转场

通过设置页面转场的时长为0,可使该页面无页面转场动画。

pageTransition() {
  PageTransitionEnter({ type: RouteType.None, duration: 0 })
  PageTransitionExit({ type: RouteType.None, duration: 0 })
}
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值