- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
全局弹窗相对于自定义弹窗有以下优点:
全局弹窗是鸿蒙在API 12增加的,PromptAction对象增加了openCustomDialog方法.
首先创建一个接口,用于参数的传递,弹窗内按钮的点击 。
interface GlobalDialogParam {
content:string; //弹窗显示内容
onConfirm: () => void //确认按钮的回调函数
onCancel: () => void// 取消按钮的回调函数
}
自定义弹窗内容,使用@Builder装饰器表明该函数将返回一个 UI 组件树,弹窗内容根据您的需求自己实现。本例中就显示一个简单的对话框.
@Builder function buildGlobalDialogComponent(param: GlobalDialogParam){
Column() {
Text(param.content).fontSize(17).fontColor("#181818")
.lineHeight(24).margin({
bottom:29,top:29,left:31,right:31
})
Divider().color("#D8D8D8").height(0.5)
RowSplit() {
Text("取消").fontSize(17).fontColor("#181818")
.fontWeight(FontWeight.Bold).onClick(event=>{
param.onCancel();
}).textAlign(TextAlign.Center).padding({
top:15,bottom:15
}).width('50%')
Text("确定").fontSize(17).fontColor($r('app.color.mainColor'))
.fontWeight(FontWeight.Bold).onClick(event=>{
param.onConfirm();
}).textAlign(TextAlign.Center).padding({
top:15,bottom:15
}).width('50%')
}
}.backgroundColor($r('app.color.white')).width('80%').borderRadius(12)
}
在GlobalDialog类中增加两个静态方法,用来显示弹窗跟关闭弹窗,关键代码都增加来注释,这里就不过多解释了 。
export class GlobalDialog {
static contentNode:ComponentContent<GlobalDialogParam>;
//显示弹窗
static show(context: UIContext,dialogParam: GlobalDialogParam){
//ComponentContent对象有三个参数
//参数1:UI 上下文
//参数2:使用 wrapBuilder 包装 buildGlobalDialogComponent 函数,这个函数用于构建对话框的实际内容
//参数3:传递给对话框的参数,包含内容文本和按钮的回调函数
GlobalDialog.contentNode = new ComponentContent(context, wrapBuilder(buildGlobalDialogComponent), dialogParam);
const promptAction = context.getPromptAction()//通过 context 获取 promptAction,用于操作对话框显示
//显示弹窗
promptAction.openCustomDialog(GlobalDialog.contentNode,{
alignment: DialogAlignment.Center,//对话框在屏幕中央显示
autoCancel: false,//点击弹窗外区域是否取消弹窗
});
}
//关闭弹窗
static close(context: UIContext){
const promptAction = context.getPromptAction()
promptAction.closeCustomDialog(GlobalDialog.contentNode)
}
}
通过以上三个步骤,全局弹窗的代码就封装好了,接下来在组件中如何调用呢?其实代码很简单,调用GlobalDialog.show方法显示弹窗,在确定跟取消按钮的回调函数中调用GlobalDialog.close取消弹窗.
GlobalDialog.show(this.getUIContext(),{
content:"您确定要删除这条记录吗?",
onConfirm:()=>{
GlobalDialog.close(this.getUIContext())//关闭弹窗
AppUtil.showToast("确定按钮点击");
},
onCancel:()=>{
GlobalDialog.close(this.getUIContext())//关闭弹窗
AppUtil.showToast("取消按钮点击");
}
})
效果图:
在鸿蒙的 ArkUI 开发中,@Builder 装饰器是一种用于简化组件构建的标记,它通常用于函数上,指示该函数返回一个 UI 组件.
@Builder 装饰器的作用:
全局弹窗的代码都提交到github上了,这个库我会一直维护,这个一个鸿蒙API使用案例的工具库,后续会陆续增加功能以及维护.
https://github.com/ansen666/harmony_tools 。
扫一扫 关注我的公众号 。
最后此篇关于鸿蒙系统(HarmonyOS)全局弹窗实现的文章就讲到这里了,如果你想了解更多关于鸿蒙系统(HarmonyOS)全局弹窗实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我应该如何处理导致一些问题的常量。? import static android.net.ConnectivityManager.TYPE_BLUETOOTH; import
前言 因为鸿蒙系统刚出不久,官方的第三方登录SDK还没出来,下面就介绍下在鸿蒙应用中实现QQ登录的方法(支持唤起QQ安卓客户端进行授权) 前期准备 登录QQ开放平台 >
简介 前段时间一直研究ArkUI中的声明式开发,开发了一些demo,但都是界面相关的,相对来说比较基础,也比较简单。所以研究一下其他的,现在成熟的APP都会有网络交互,所以记录一篇网络
前言 鸿蒙这次API7更新除了新增TS声明式开发之外,还有JS开发也增加了很多API,JS开发自定义组件越来越方便了。 本项目基于ArkUI中JS扩展的类Web开发范式,关于
前言 本项目就是基于ArkUI中的声明式编程开发,语言ETS(Extended Type Script),代码都在ets文件中编写,这个文件用于描述 UI 布局、样式、事件交互和页面逻辑。
鸿蒙(HarmonyOS)原生AI能力之文本识别 原生智能介绍 在之前开发中,很多场景我们是通过调用云端的智能能力进行开发。例如文本识别、人脸识别等。 原生即指将一些能力直接集成在
全局弹窗相对于自定义弹窗有以下优点: 封装更彻底,一行代码就能调用 跟组件耦合度低,只需要传入组件的UIContext对象,不需要跟自定义弹窗一样需要在组件内部实例化CustomDialo
我正在使用 JS 框架创建一个 HarmonyOS 可穿戴应用程序,我想使用振动器。 watch 肯定有一个振动器,因为当我在设置应用程序中使用滚动条时我能感觉到它。 所以我申请了 system_gr
1 简介 通讯录demo主要分为联系人界面、设置紧急联系人、服务卡片3个模块,分为Java和JS两个版本,本篇主要讲解用尽可能的用纯JS去实现,实在无法实现的地方采用JS与Java结合
简介 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式,关于语法和概念直接看官网官方文档地址: 基于TS扩展的声明式开发范式1、基于TS扩展的声明式开发范式2
DevEco Studio 下载、安装教程 DevEco Studio 下载 下载地址 运行环境 操作系统:Windows 10 64位 内存:8GB及以上 硬盘:100GB及以上 分辨率:1580*
我正在使用 Java SDK 在 HarmonyOS 中创建一个自定义组件,我必须在其中双击执行一些任务。但我无法检测到双击事件。 在 Android 中,借助 手势检测器 类我们可以检测双击事件如下
看到在 51CTO HarmonyOS社区张老师发了关于设备方向的认证资料,我给大家准备了应用方向的认证资料。 因为认证刚开始发布,现阶段去考相对来说是挺简单的,但是还是得把大纲的东西全部弄会。 官网
我正在开发华为 HarmonyOS 应用程序,我正在尝试使用 RxJava 为后台任务实现一个基类。我的问题是我不知道如何在主线程上观察。 在常规 Android 上,我会使用 AndroidSche
我正在做一个 Flutter 项目。其中,我们要生成 Android、iOS 和 HarmonyOS(华为)的构建版本。但我不确定 Flutter 是否支持这个操作系统。我浏览了互联网上的一些东西,但
我正在使用 Java SDK 在 HarmonyOS 中创建一个自定义组件,我必须在组件实例延迟一段时间后执行一些任务。 在 Android 中,我们有 postDelayed(Runnable ac
我是一名优秀的程序员,十分优秀!