HarmonyOS鸿蒙Next中可以自定义CustomDialog的退出动画吗?

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

HarmonyOS鸿蒙Next中可以自定义CustomDialog的退出动画吗? 可以自定义CustomDialog的退出动画吗?我不需要系统自带那种淡入淡出动画,我想实现sheet那样的纵向移动的动画

3 回复

可以试下下面这段代码:

@CustomDialog
struct Example {
  controller: CustomDialogController = new CustomDialogController({
    builder: Example({}),
    autoCancel: false
  })
  @State showFlag: Visibility = Visibility.Visible;
  @State isAutoCancel: boolean = false;
  textController: TextAreaController = new TextAreaController()

  build() {
    Column() {
      Row() {
        TextArea({ controller: this.textController })
          .fontSize(20)
      }
      .padding(8)
      .backgroundColor('#FFFFFF')
      .height(200)
      .margin({ bottom: -5 })
      .width('100%')
    }
    .justifyContent(FlexAlign.End)
    .width('100%')
    .height("100%")
    .margin({
      bottom: -15
    })
    .onClick(() => {
      console.log("dialogClick")
      if (this.isAutoCancel) {
        console.log("dialogClick2")
        this.cancel();
      }
    })
    .visibility(this.showFlag)
    .transition(TransitionEffect.OPACITY.animation({ duration: 800 })
      .combine(TransitionEffect.translate({ y: 500 })))
  }

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

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

  build() {
    Column() {
      Button('click me')
        .onClick(() => {
          this.dialogController.open()
        })
    }.width('100%')
    .height('100%')
    .onClick(())
  }
}

更多关于HarmonyOS鸿蒙Next中可以自定义CustomDialog的退出动画吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,自定义CustomDialog的退出动画是可以实现的。鸿蒙提供了丰富的动画API,允许开发者通过代码或资源文件定义和管理动画效果。具体来说,可以使用AnimatorAnimation类来创建和控制动画。对于CustomDialog的退出动画,可以在onDismissonCancel方法中触发相应的动画逻辑。通过设置动画的持续时间、插值器、属性值等参数,可以实现各种自定义的退出动画效果。此外,还可以利用AnimatorSet来组合多个动画,以达到更复杂的效果。

在HarmonyOS鸿蒙Next中,你可以通过重写CustomDialogonStop方法或使用Animator来自定义退出动画。首先,创建一个Animator对象并设置动画效果,然后在onStop中启动该动画。你还可以通过WindowManager.LayoutParams调整窗口属性来实现更复杂的动画效果。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!