HarmonyOS 鸿蒙Next中修改自定义对话框的转场方式
HarmonyOS 鸿蒙Next中修改自定义对话框的转场方式 显示在屏幕底部的自定义对话框,如何设置弹窗从底部弹入,从底部退出。
mTimeSelectorDialog: CustomDialogController = new CustomDialogController({
builder: TimeSelectorDialog({
dialogTitle: '分享时间',
confirm: (timeBean: TimeBean) => {
let timeHour = timeBean.timeHour
let timeMinute = timeBean.timeMinute
console.info(`时间选择=${timeHour}:${timeMinute}`)
this.timeSelectorText(timeHour * 60 * 60 + timeMinute * 60)
this.onSaveAction()
}
}),
customStyle: true,
alignment: DialogAlignment.Bottom
})
更多关于HarmonyOS 鸿蒙Next中修改自定义对话框的转场方式的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
参考
@CustomDialog
struct CustomDialogExample {
controller: CustomDialogController
@State showFlag: Visibility = Visibility.Visible;
build() {
Column() {
Button("关闭弹窗")
}
.width("100%")
.height(400)
.backgroundColor(Color.Gray)
.onClick(() => {
this.cancel();
})
.visibility(this.showFlag)
//核心代码 设置动画事件为200ms ,设置组件转场时插入的起点和删除的终点为屏幕以下100vp
.transition(TransitionEffect.OPACITY.animation({ duration: 200 }).combine(TransitionEffect.translate({ y: 100 })))
}
// 设置弹窗为隐藏,此时弹出向下退出的动效生效,再设置延时关闭弹窗。
cancel() {
this.showFlag = Visibility.Hidden
setTimeout(() => {
this.controller.close()
}, 200)
}
}
@Entry
@Component
struct CustomDialogUser {
dialogController: CustomDialogController = new CustomDialogController({ builder: CustomDialogExample(), autoCancel: false, customStyle: true })
build() {
Column() {
Button('click me').onClick(() => {
this.dialogController.open()
})
}.width('100%').height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next中修改自定义对话框的转场方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
底部的话,用半模态转场比较好吧
在HarmonyOS鸿蒙Next中,修改自定义对话框的转场方式可以通过以下步骤实现:
- 创建自定义对话框:使用
Dialog
类或其子类创建自定义对话框。 - 设置转场动画:通过
Window
的setTransition
方法设置转场动画。可以使用系统提供的动画资源,如R.transition.slide_in_right
,或自定义动画资源。 - 应用转场动画:在显示对话框时,调用
show()
方法,系统会自动应用设置的转场动画。
示例代码:
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_dialog);
dialog.getWindow().setTransition(R.transition.slide_in_right);
dialog.show();