HarmonyOS 鸿蒙Next如何让CustomDialog的蒙层通过渐隐的方式展示,而弹框内容自底向上弹出

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

HarmonyOS 鸿蒙Next如何让CustomDialog的蒙层通过渐隐的方式展示,而弹框内容自底向上弹出

如何让CustomDialog的蒙层通过渐隐的方式展示,而弹框内容自底向上弹出

如果通过transition设置的话,蒙层和弹框内容会采用相同的动画效果

6 回复
let anmDuration: number = 300;

// 弹窗交互
[@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("自定义动画的弹窗")
}
.borderRadius(20)
.backgroundColor('#ff6288cb')
.height(200)
.width('100%')
}
.margin({ top: 10 })
.justifyContent(FlexAlign.Center)
.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: 500 })))
}

// 延迟关闭弹窗,让自定义的出场动画显示
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%')
}
}

这个代码,是想要的吗?

是否可以尝试用 bindSheet 代替dialog?

这个效果可以满足你的需求.


感谢回复,在尝试用bindSheet,不过底部圆角大小没法修改,向上滑动没法禁用

我感觉现在组件的问题就是看着很多. 但是组件支持的自定义程度不够, 很多精细的UI系统的UI是不能完全符合需求.

确实是的,期待后期的优化吧

在HarmonyOS 鸿蒙Next中,要让CustomDialog的蒙层通过渐隐的方式展示,同时弹框内容自底向上弹出,可以通过自定义动画效果来实现。

首先,需要定义CustomDialog的UI结构,并确保蒙层和弹框内容的布局正确。接着,利用ArkUI框架的动画功能,为CustomDialog设置自定义的显示和隐藏动画。

对于蒙层,可以设置其透明度从0渐变到1的动画效果;对于弹框内容,可以使用translateY动画,使其从屏幕底部向上移动至目标位置。这些动画效果可以通过在CustomDialog的appear和disappear事件中分别设置进入和退出动画来实现。

确保动画的持续时间、延迟和缓动函数等参数符合设计要求,以达到最佳的视觉效果。

如果以上方法未能实现预期效果,可能是由于动画配置不当或CustomDialog的某些属性限制了动画的表现。此时,建议查阅最新的HarmonyOS开发文档,或参考其他成功的实现案例,以确保动画配置的正确性。

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

回到顶部