当前位置: 首页 > news >正文

【HarmonyOS】逻辑类中调用通用弹窗的处理

【HarmonyOS】逻辑类中调用通用弹窗的处理

一、背景说明:

在应用开发中,为了保证APP应用内的弹框的一致性,一般而言会封装风格一致的通用弹框组件。用于提示和便捷的逻辑触发操作。比如通知,踢出登录,奖励提醒等等。

并且鸿蒙原生的customDialog不能在纯逻辑处理类中进行触发和调用,与UI类是强绑定的关系。所以对弹框进行组件子窗口封装是很有必要。

注意:目前官方对外的API还没有开放可在纯逻辑中使用的弹框。

考虑到弹框的通用性,在确定和取消按钮样式的基础上,添加对UI插槽的支持,可以将自定义的View内容填充到弹框中,并且可修改弹框的宽高。

考虑到弹框信息,用户需要有操作情景。将弹框处理队列维持信息的缓存和记录,每次操作完当前弹框后,才会显示下个弹框。因为有队列,所以对消息权限紧急的信息,添加插队处理。

二、如何设计:

  1. 首先为了实现可在纯逻辑开发类中触发弹框,我们需要将通用弹框的UI部分进行剥离,呈现在业务窗口之上,创建子窗口建立提醒交互层。

  2. 因为UI进行了剥离,所以我们需要有调用和信息传递的桥接层,此时就需要封装一个单例mgr进行管理通用弹框的队列,状态,唤起接口等。

  3. 配置弹框要展示的信息,将配置信息对象添加到DialogManager中,加入队列去展示。

// 插槽使用DialogUIConfigInfo.mBuilder 将修饰的函数赋值传入即可,注意调整弹框宽高 customContain() {Text("你好CSDN")
}  mDialogUIConfigInfo.mBuilder = this.customContain.bind(this)

三、剥离通用弹框UI的原理:

CustomDialog是弹框UI类,在业务层窗口之上,创建子窗口。将UI布局添加,默认隐藏。再通过封装的单例DialogMgr通过对配置对象的调度,将数据传输给CustomDialog,弹框界面唯一,每次弹框变化只是刷新数据。

通过DialogMgr进行队列的维护,并且使用DiaologType对普通和特殊两种类型的弹框,进行区分。
DialogUIConfigInfo是对弹框的信息汇总配置对象,通过设置所需要的信息,将对象传给DialogMgr进行展示使用。

相关文章:

  • 旅游卡免费旅游的使用条件有哪些?
  • Python自动化测试框架:unittest与pytest的深度对比
  • Android ServiceManager和它的兄弟们
  • 来自中国信通院的认可!上海斯歌受邀加入“EP-Link 智能流程推进计划”
  • MongoDB UPDATE使用$setOnInsert为新插入数据设置默认值
  • 6.7.32 用于计算机辅助检测和诊断研究的精选乳房 X 线摄影数据集
  • 12. Django 第三方功能应用
  • 私有云数据库特征
  • AdroitFisherman模块测试日志(2024/6/10)
  • 动态内存管理学不懂,小代老师带你深入理解动态内存管理(下卷)
  • 堆和栈(heap and stack)
  • 汽车EDI——Volvo EDI 项目案例
  • 计算机网络期末考试知识点(关键词:江中)
  • Spark 面试题(二)
  • BIOPLUSS引领膳食行业创新、整合与再造
  • Android优雅地处理按钮重复点击
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • avalon2.2的VM生成过程
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • GitUp, 你不可错过的秀外慧中的git工具
  • jquery ajax学习笔记
  • JS变量作用域
  • k个最大的数及变种小结
  • PAT A1050
  • Python学习之路16-使用API
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring-boot 启动时碰到的错误
  • TypeScript迭代器
  • 从重复到重用
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于web的全景—— Pannellum小试
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端临床手札——文件上传
  • 正则学习笔记
  • 数据可视化之下发图实践
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​虚拟化系列介绍(十)
  • #include到底该写在哪
  • (23)mysql中mysqldump备份数据库
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (MATLAB)第五章-矩阵运算
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (第二周)效能测试
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .dwp和.webpart的区别
  • .net CHARTING图表控件下载地址
  • .Net Web窗口页属性
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • .NET开发不可不知、不可不用的辅助类(一)
  • @Autowired注解的实现原理