鸿蒙HarmonyOS- 弹框组件库

news2024/10/5 17:04:43

简介

        今天介绍一个基于ArkUI框架开发的弹框组件库,该库基于ArkUI的弹框基础功能和自定义能力。针对通用的弹框业务场景,该库提供了丰富的组件弹窗功能。

        包括确认输入弹窗、列表展示选择弹窗、自定义底部/顶部弹窗、自定义动画弹窗、自定义全屏弹窗、消息类弹窗、抽屉类弹窗、联想类弹窗、图片浏览弹窗等。通过使用这个组件库,可以让弹窗的集成和使用变得更加简单。

示例

1.支持内容确认弹窗

2.支持input弹窗

3.支持列表list弹窗

4.支持bottom列表互弹窗

5.支持bottom复杂交互弹窗

6.支持气泡类弹窗

7.支持自定义全屏弹窗

8.支持消息类弹窗

9.支持顶部弹窗

10.支持联想类弹窗

11.支持抽屉类弹窗

12.支持自定义动画弹窗

13.支持大图浏览弹窗

使用方法

1.安装

ohpm install @ohos/dialog

2.在需要使用的页面导入需要的组件,如ConfirmDialog.ets:

import { ConfirmDialog } from '@ohos/dialog'

以确认弹框为例,可以这样使用dialog弹框库:

// 引入需要的模块和组件
import { ConfirmDialog } from '@ohos/dialogs'
import { BaseCenterMode } from '@ohos/dialogs'  // 自定义属性
import { TestType } from '@ohos/hypium'

// 定义 ConfirmExample 结构体,作为入口组件
@Entry
@Component
struct ConfirmExample {
  // 定义状态变量
  @State textValue: string = '我是标题'
  @State contentValue: string = '床前明月光,疑是地上霜,举头望明月,低头思故乡。床前明月光,疑是地上霜,举头望明月,低头思故乡。'
  @State inputValue: string = 'click me'
  @State positionDialog: string = 'center'
  @State animitionMove: string = 'center'
  @State model: BaseCenterMode = new BaseCenterMode()

  // 生命周期钩子,组件即将出现时调用
  aboutToAppear() {
    this.model.title = '我是标题',
    this.model.contentValue = '床前明月光,疑是地上霜,举头望明月,低头思故乡。床前明月光,疑是地上霜,举头望明月,低头思故乡。'
    // this.model.contentMargin = 20
    this.model.titleMargin = { top: 30, bottom: 10 }
    this.model.btnWidth = '100%'
    this.model.btnHeight = '100%'
    this.model.confirmBtnFontColor = '#87C5BF'
    this.model.confirmBtnBgColor = '#fff'
    this.model.confirm = this.onAccept
    this.model.btnContentHeight = 60
    this.model.btnContentMargin = { top: 20 }
    this.model.btnContentBorder = {
      width: { top: 1 },
      color: { top: '#F0F0F0' },
      style: { top: BorderStyle.Solid },
    }
  }

  // 创建自定义对话框控制器
  dialogController: CustomDialogController = new CustomDialogController({
    builder: ConfirmDialog({
      slotContent: () => {
        this.componentBuilder()
      },
      model: this.model
    }),
    cancel: this.existApp,
    autoCancel: true,
    alignment: DialogAlignment.Center,
    offset: { dx: 0, dy: 0 },
    gridCount: 4,
    customStyle: true
  })

  // 在自定义组件即将销毁时删除和置空对话框控制器
  aboutToDisappear() {
    delete this.dialogController, // 删除dialogController
    this.dialogController = undefined // 将dialogController置空
  }

  // 确认按钮点击回调函数
  onAccept() {
    console.info('Callback when the second button is clicked')
  }

  // 取消按钮点击回调函数
  existApp() {
    console.info('Click the callback in the blank area')
  }

  // 自定义内容构建函数
  @Builder componentBuilder() {
    Text('床前明月光,疑是地上霜,举头望明月,低头思故乡。床前明月光,疑是地上霜,举头望明月,低头思故乡。')
      .fontSize(this.model.contentFontSize)
      .margin(20)
      .textAlign(this.model.contentTextAlign)
  }

  // 构建入口组件
  build() {
    Column() {
      Button('显示confirm弹窗').onClick(() => {
        this.dialogController.open()
      })
    }
  }
}

示例中的其他弹框使用方法以及框架的内部实现原理可以参考:OpenHarmony-TPC/openharmony_tpc_samples - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot—支付—支付宝

一、流程 二、沙箱操作 1.用支付宝账号登录【开放控制平台】创建应用获取 appid 2.选择沙箱模拟环境 3.沙箱应用-》获取appid(一个appid绑定一个收款支付宝账户) 4.利用开发助手工具生成RSA2密钥 公钥:传给支付宝平台 私钥:配置代码中,…

【每日一题】2487. 从链表中移除节点-2024.1.3

题目: 2487. 从链表中移除节点 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1: 输入:head [5,2,13,3,8] 输出:[13,8] 解释:需要移除的节点是 5 &…

计算机网络期末复习——计算大题(一)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

DataGear 4.7.0 发布,数据可视化分析平台

DataGear 4.7.0 发布,严重漏洞和BUG修复,具体更新内容如下: 新增:HTTP数据集新增【编码请求地址】支持,可用于解决请求地址中文乱码问题;新增:新增数据源密码加密存储支持(开启需设…

企业CIO如何面对数字化转型

随着互联网新技术的不断发展,必将导致商业模式的改变,企业信息化的内涵也将发生改变。IT在企业的定位更可能会上升到合作伙伴型与引领型这些较高的层面,IT架构模式、系统建设模式、IT部门结构等都将发生质变。而数字化时代必定属于CIO的时代&…

Vue3.4更新 “Slam Dunk“发布!!!

Announcing Vue 3.4 | The Vue Point. vue3.4更新官方文档 在vue2即将结束更新的时候,vue3迎来了一个重要的更新。代号为“🏀 Slam Dunk”,即"灌篮高手"。这个版本进行了很多显著的内部改进,最重要的是模版解析的底层逻…

访问学者J1签证的申请流程

访问学者J1签证是许多人前往美国进行学术研究和文化交流的重要途径之一。申请J1签证需要经过一系列步骤和程序,让知识人网小编带大家来了解一下申请流程吧。 首先,申请者需要确认自己符合J1签证的资格要求。这包括被美国的赞助机构或组织接受&#xff0c…

clickhouseSQL日期相关

1. 毫秒级时间戳转日期/小时 --13位时间戳转具体时间 toDateTime(report_time / 1000) as _c00 -- 获取时间戳对应的时间点整点(结果:%Y-%m-%d %H:00:00.0) eg:2022-09-28 23:00:00.0 toStartOfHour(toDateTime(report_time / 1000)) AS _10-- 获取时间…

每日一题——LeetCode1005.K次取反后最大化的数组和

方法一 个人方法&#xff1a; 将数组从小到大排序后&#xff0c;假设数组共有n个负数&#xff0c;要使数组的和尽可能大就要尽可能将较大的负数变为正数&#xff0c;有以下几种情况&#xff1a; 1、k<n&#xff0c;那就把数组前k个负数都转为正数即可。 2、k>n&#xf…

在前端开发中,如何优化网站的加载速度?

在前端开发中&#xff0c;网站的加载速度是一个至关重要的因素&#xff0c;它直接影响着用户体验和搜索引擎优化&#xff08;SEO&#xff09;。一个快速、响应迅速的网站不仅能让用户更加满意&#xff0c;还能提高网站的排名和流量。那么&#xff0c;如何优化网站的加载速度呢&…

Windows下使用DOS命令上传文件到服务器

前言 本文将分享在windows环境下&#xff0c;如何编写DOS脚本来上传文件到远程服务器 使用工具 这里我们需要下载&#xff1a;PuTTY&#xff08;下载地址&#xff09; PuTTY是由Simon Tatham开发的免费、开源的SSH和Telnet客户端。它允许用户通过命令行使用SSH或Telnet协议连…

Qt第一个UI程序设计

在第一个Qt程序的基础上我对ui界面进行设计&#xff0c;点击设计按钮 然后 拖动Label按钮输入想要输入的语句。 运行结果如下图。

模式识别与机器学习-半监督学习

模式识别与机器学习-半监督学习 半监督学习半监督学习的三个假设半监督学习算法自学习算法自学习的步骤&#xff1a;自学习的优缺点&#xff1a;优点&#xff1a;缺点&#xff1a; 协同训练多视角学习生成模型半监督SVM 谨以此博客作为复习期间的记录 半监督学习 半监督学习&…

儿童可以戴骨传导耳机吗?骨传导耳机对儿童有危害吗?

儿童是可以佩戴骨传导耳机的&#xff0c;相比于传统的入耳式蓝牙耳机&#xff0c;佩戴骨传导耳机要更健康一些。 首先骨传导耳机通过人体骨骼来传递声音&#xff0c;不经过耳道和耳膜&#xff0c;所以对听力的损伤较小&#xff0c;而且由于儿童还处于发育期&#xff0c;耳道和耳…

Java多线程技术9——非阻塞队列

1 概述 非阻塞队列的特色是队列里面没有数据时&#xff0c;返回异常或null。在JDK的并发包中&#xff0c;常见的非阻塞队列有&#xff1a;ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue、ConcurrentLinkedDeque、CopyOnWriteArrayL…

代码随想录算法训练营Day16 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

LeetCode 654 最大二叉树 本题思路&#xff1a;我们可以看到每次其实这个找最大值&#xff0c;然后创建节点的过程就是一个二叉树的前序遍历的过程。所以&#xff0c;我们可以递归来完成它。 先创找到数组中&#xff0c;最大的值的下标&#xff0c;然后创建根节点然后根据下标…

Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提 之前写过一篇文章&#xff1a;https://qa-lsq.blog.csdn.net/article/details/119782694 只是简单尝试了一下生成一个随机手机号码。 但是如果在工作中一个实际场景要用的二次开发&#xff0c;可能会遇到一些问题。 比如这样一个场景&#xff1a; Mobile或者前端调用部分…

【数据结构】堆的实现及TOP-K问题

文章目录 前言1. 堆的概念及结构2. 堆的实现2.1 堆向上调整算法2.2 堆向下调整算法2.3 堆的创建2.4 堆的删除2.5 堆的常用接口代码实现 3. 堆的应用TOP-K问题 前言 在正式讲堆之前&#xff0c;我们要先来讲一下二叉树的顺序结构&#xff1a; 普通的二叉树是不适合用数组来存储…

Python 实现给 pdf 文件自动识别标题并增添大纲

一、背景&#xff1a; 客户方提供过来一个开放平台的pdf文档&#xff0c;文档里有几十个接口&#xff0c;没有大纲和目录可以定位到具体内容&#xff0c;了解整体的API功能&#xff0c;观看体验极度差劲&#xff0c;所以想使用Python代码自动解析pdf文档&#xff0c;给文档增添…