HarmonyOS 鸿蒙Next CustomDialog 入场和出场动画

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next CustomDialog 入场和出场动画

自定义dialog 希望可以自定义入场和出场动画,从底部滑入滑出
 

3 回复

参考如下demo设置自定义弹窗的自定义动画,思路就是让自定义弹窗占满整个页面然后让里面的内容来添加转场动画,然后这个demo就是底部弹出底部收起的。

let anmDuration: number = 1000;

// 弹窗交互
[@CustomDialog](/user/CustomDialog)
struct CustomDialogExample {
 controller: CustomDialogController =
   new CustomDialogController({ builder: CustomDialogExample({}), autoCancel: false })
 [@State](/user/State) showFlag: Visibility = Visibility.Visible;
 [@State](/user/State) isAutoCancel: boolean = false;
 textController: TextAreaController = new TextAreaController()

 build() {
   Column() {
     Row() {
       Text("自定义动画的弹窗")
     }
     .padding(8)
     .backgroundColor('#FFFFFF')
     .height(200)
     .margin({ bottom: -5 })
     .width('100%')
   }
   .justifyContent(FlexAlign.End)
   .width('100%')
   .height("100%")
   .onClick(() => {
     console.log("dialogClick")
     if (this.isAutoCancel) {
       console.log("dialogClick2")
       this.cancel();
     }
   })
   .visibility(this.showFlag)
   .transition(TransitionEffect.OPACITY.animation({ duration: anmDuration })
     .combine(TransitionEffect.translate({ y: 100 })))
 }

 cancel() {
   this.showFlag = Visibility.Hidden
   console.log("closeDialog")
   setTimeout(() => {
     this.controller.close()
   }, anmDuration)
 }
}

[@Entry](/user/Entry)
[@Component](/user/Component)
struct CustomDialogUser {
 [@State](/user/State) isAutoCancel: boolean = true;
 dialogController: CustomDialogController = new CustomDialogController({
   builder: CustomDialogExample({ isAutoCancel: this.isAutoCancel }),
   autoCancel: this.isAutoCancel,
   customStyle: true
 })

 build() {
   Column() {
     Button('click me').onClick(() => {
       this.dialogController.open()
     })
   }.width('100%').height('100%')
 }
}
我们可以写一下position,做一个动画的参数过渡,试试

针对HarmonyOS 鸿蒙Next中CustomDialog的入场和出场动画问题,以下提供具体的解决方案:

在HarmonyOS鸿蒙Next中,CustomDialog的入场和出场动画可以通过设置动画参数来实现。

入场动画:

  • 使用CustomDialogController的openAnimation属性来定义弹窗的打开动画。
  • 可以设置动画的持续时间、曲线、延迟等参数来控制动画效果。

出场动画:

  • 可以通过设置CustomDialog的transition属性,结合TransitionEffect来实现弹窗关闭时的动画效果。
  • 常用的动画效果包括透明度变化和位置移动等。
  • 在关闭弹窗时,可以先将弹窗设置为隐藏状态,再触发动画效果,最后关闭弹窗。

示例代码可以参考官方文档或相关开发社区提供的资源。如果在实际开发过程中遇到问题,建议查阅最新的HarmonyOS开发文档或寻求专业开发者的帮助。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部