当前位置: 首页 > 科技观察

知识分享——在页面跳转中添加对话框

时间:2023-03-21 22:21:54 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com在之前的帖子中发在社区,我分享的内容主要是理论知识。在以后的知识分享中,笔者将展示一些简单实用的demo实例,以实践的形式与大家一起学习和探讨HarmonyOS的相关技术知识。文本对话框组件(dialogcomponent)是UI设计中经常使用的页面布局元素。对话可以与许多交互事件相关联。当用户由于手部失误而进行了错误的交互操作时,Dialog能够及时起到缓冲作用,为用户提供再次交互的机会。Dialog分为三种类型,分别是ToastDialog、PopupDialog和CommonDialog。本次知识分享以一个简单的Demo为例,向大家展示如何在页面跳转中正确穿插CommonDialog组件。话不多说,开始吧!首先,我们不妨新建一个名为“Dialog”的项目。如下图勾选相关选项;在实现页面跳转逻辑之前,我们需要新建一个AbilitySlice和xml文件来搭建页面;(1)打开entry>src>main>java>slice,右击sIice新建Java类,命名为SecondAbilitySlice;(2)打开entry>src>main>resources>base>layout,在layout上右击新建LayoutResourceFile,命名为second;(3)打开新建的SecondAbilitySlice,在“publicclassSecondAbilitySlice{}”的基础上添加如下代码(用于完成页面的基本布局,并将SecondAbilitySlice与second.xml文件绑定);publicclassSecondAbilitySliceextendsAbilitySlice{@OverrideprotectedvoidonStart(Intentintent){//设置onStart()回调函数super.onStart(intent);super.setUIContent(ResourceTable.Layout_second);//绑定SecondAbilitySlice和second.xml文件}接下来我们通过xml布局分别给MainAbilitySlice和SecondAbilitySlice添加一个文本组件;(4)打开entry>src>main>resources>base>layout>ability_main_xml,添加一个Text组件,示例代码如下;(5)打开新建的second.xml,添加一个Text组件,设置页面背景色改成黑色,示例代码如下:最后,我们分别在MainAbilitySlice和SecondAbilitySlice中新建CommonDialog组件,并编写相关的事件逻辑;(6)打开MainAbilitySlice,在onStart()函数的“{}”中加入如下代码;CommonDialog对话框=newCommonDialog(getContext());//创建一个名为dialog的新CommonDialog组件dialog.setSize(800,400);//设置CommonDialog的宽高dialog.setTitleText("prompt");//设置CommonDialogContent的标题文字dialog.setContentText("Areyousuretoswitchpages?");//设置CommonDialog的内容文本dialog.setButton(IDialog.BUTTON1,"Confirm",(iDialog,i)->dialog.destroy());//设置CommonDialog的第一个按钮,当用户触发这个按钮后,CommonDialog会销毁dialog.setButton(IDialog.BUTTON2,"Cancel",(iDialog,i)->dialog.hide());//设置CommonDialog的第二个按钮。用户触发该按钮后,CommonDialog会隐藏dialog.setDestroyedListener(newCommonDialog.DestroyedListener(){//设置CommonDialogImplementor的销毁监听器@OverridepublicvoidonDestroy(){present(newSecondAbilitySlice(),newIntent());//设置present(),当CommonDialog被销毁时执行该方法,用户界面将从原来的MainAbilitySlice导航到系统新创建的SecondAbilitySlice实例中}});对话.隐藏();//设置CommonDialog的初始状态为隐藏状态(初始状态默认隐藏)Texttext1=(Text)findComponentById(ResourceTable.Id_text);//ability_main_xml中已经定义了Text组件,命名为text1text1.setClickedListener(newComponent.ClickedListener(){//设置Text的点击监听@OverridepublicvoidonClick(Componentcomponent){dialog.show();//设置show(),当用户点击Text组件时执行该方法,CommonDialog会进入前台与用户交互}});(7)打开SecondAbilitySlice,在onStart()函数的“{}”中加入如下代码;CommonDialogDialog=newCommonDialog(getContext());Dialog.setSize(800,400);Dialog.setTitleText("提示");Dialog.setContentText("你确定要切换页面吗?");Dialog.setButton(IDialog.BUTTON1,"Confirm",(iDialog,i)->Dialog.destroy());Dialog.setButton(IDialog.BUTTON2,"Cancel",(iDialog,i)->Dialog.hide());Dialog.setDestroyedListener(newCommonDialog.DestroyedListener(){@OverridepublicvoidonDestroy(){终止();//设置terminate(),当CommonDialog被销毁时执行该方法结束SecondAbilitySlice的生命周期,用户界面回到原来的MainAbilitySlice实例}});Texttext1=(Text)findComponentById(ResourceTable.Id_Text);text1.setClickedListener(newComponent.ClickedListener(){@OverridepublicvoidonClick(Componentcomponent){Dialog.show();}});好的,你完成了!调用远程模拟器运行这个demo,可以看到相应的点击效果。结语本期的知识分享到此结束。更多信息请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com