openHarmony系统组件学习

简介: openHarmony系统应用开发的组件很多,本篇文章仅以一个例子作为一个通用的学习方法,如果之前学过安卓开发,这部分内容应该除了语言,其他没有任何难度,本篇文章参考官网实现一个dialog组件,开始了~~

一、前言

openHarmony系统应用开发的组件很多,本篇文章仅以一个例子作为一个通用的学习方法,如果之前学过安卓开发,这部分内容应该除了语言,其他没有任何难度,本篇文章参考官网实现一个dialog组件,开始了~~

二、构建所需步骤

构建一个界面需要的基本步骤,openHarmony由于采用js语言,所以动画渲染方面可以直接引用css文件,然后具体界面和逻辑控制方面是和安卓开发无异

  • 页面设计的hml
  • 页面渲染的css
  • 逻辑控制的js

当然以上三个步骤只是基本的步骤,目前也可以引入其他语言进行开发,这部分就不介绍了,在学习dialog步骤之前先声明一下以下会用到的属性和方法

1. 属性

除支持通用属性,外弹窗类组件不支持focusable、click-effect属性,支持如下属性:

名称 类型 默认值 必填 描述
dragable7+ boolean false 设置对话框是否支持拖拽。

2.样式

仅支持通用样式中的width、height、margin、margin-[left|top|right|bottom]、margin-[start|end]样式。

3.事件

不支持通用事件,仅支持如下事件:

名称 参数 描述
cancel - 用户点击非dialog区域触发取消弹窗时触发的事件。
show7+ - 对话框弹出时触发该事件。
close7+ - 对话框关闭时触发该事件。

4.方法

不支持通用方法,仅支持如下方法。 dialog属性、样式均不支持动态更新

名称 参数 描述
show - 弹出对话框。
close - 关闭对话框。

上述出现的类似show7+指的是api至少7以上,通用的属性方法等等类似安卓开发中的基类属性

三、页面设计

页面设计时需要自行进行各个组件或者子组件的声明,这一点和安卓开发没有区别

<!-- dialog.hml -->
<div class="doc-page">
<!-- 按钮的声明-->
    <div class="btn-div">
        <button type="capsule" value="开始体验dialog" class="btn" onclick="showDialog"></button>
    </div>

<!--dialog的声明 -->
    <dialog id="simpledialog" dragable="true" class="dialog-main" oncancel="cancelDialog">
        <div class="dialog-div">
        <!-- 点击dialog文本的事件-->
            <div class="inner-txt">
                <text class="txt" ondoubleclick="doubleclick">我的dialog</text>
            </div>

        <!-- 具体点击的两种按钮的事件-->
            <div class="inner-btn">
                <button type="capsule" value="取消" onclick="cancelSchedule" class="btn-txt"></button>
                <button type="capsule" value="确认" onclick="setSchedule" class="btn-txt"></button>
            </div>
        </div>
    </dialog>
</div>

四、页面渲染

界面渲染,这部分由css完成界面的渲染,属性差不多,只是需要记忆一些常用的属性

/* dialog.css */

/*整体渲染*/
.doc-page {
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

/*按钮的整体设置*/
.btn-div {
  width: 100%;
  height: 200px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

/*各个子部件的设置*/
.btn {
  background-color: #F2F2F2;
  text-color: #0D81F2;
}
.txt {
  color: #000000;
  font-weight: bold;
  font-size: 39px;
}

/*dialog的整体设置*/
.dialog-main {
  width: 500px;
}
.dialog-div {
  flex-direction: column;
  align-items: center;
}

/*内部各种子部件的设置*/
.inner-txt {
  width: 400px;
  height: 160px;
  flex-direction: column;
  align-items: center;
  justify-content: space-around;
}
.inner-btn {
  width: 400px;
  height: 120px;
  justify-content: space-around;
  align-items: center;
}
.btn-txt {
  background-color: #F2F2F2;
  text-color: #0D81F2;
}

五、逻辑控制

这部分除了语法方面的,上手还是比较容易的,写法也差不多,涉及的各个属性就不一一进行说明了,注释写了部分的用法,其他用法可以去官网进行系统性的学习

// dialog.js
import prompt from '@system.prompt';
export default {
    //按钮的点击事件
    showDialog(e) {
        this.$element('simpledialog').show()
    },
    
    //触碰非dialog区域进行取消的逻辑
    cancelDialog(e) {
        prompt.showToast({
            message: 'Dialog cancelled'
        })
    },
    
    //取消事件的处理逻辑
    cancelSchedule(e) {
        this.$element('simpledialog').close()
        prompt.showToast({
            message: '取消成功'
        })
    },
    
    //确认事件的处理逻辑
    setSchedule(e) {
        this.$element('simpledialog').close()
        prompt.showToast({
            message: '确认成功'
        })
    },
    
    //双击的处理逻辑
    doubleclick(e){
        prompt.showToast({
            message: '双击了dialog'
        })
    }
}

六、总结

总体来讲还算比较容易地,如果是js和css学的比较好的还可以弄出更多花样,以上内容以一个组件学习的例子阐述了一般的开发流程,具体请参考官方文档进行学习,附上界面截图,我们下一篇见

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

目录
相关文章
|
2月前
|
数据采集 缓存 JSON
GitHub 开源爆款工具|MediaCrawler:程序员零门槛采集抖音/小红书/B站等社交评论,30K star 背后的场景实战揭秘!
MediaCrawler 是一个支持多平台的社交媒体数据爬虫工具,覆盖小红书、抖音、B站等主流平台,提供关键词/ID爬取、评论采集、登录态缓存、代理池等功能,结合 Playwright 实现浏览器模拟,降低逆向难度,适合内容运营、数据分析等场景,开源免费,使用简便。
412 0
|
7月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
422 31
|
小程序 Java 关系型数据库
微信记账小程序
微信记账小程序
501 0
|
存储 SQL Prometheus
【TiDB原理与实战详解】1、原理与基础优化~学不会? 不存在的!
TiDB 是一款开源的分布式关系型数据库,具备水平扩展、高可用性和强一致性等特点,适用于高并发、低延迟的大规模数据处理场景。其架构设计灵感源自 Google 的 Spanner 和 F1,并兼容 MySQL。TiDB 集群由 TiDB Server(无状态 SQL 层)、PD(元数据管理模块)和 TiKV Server(分布式存储层)组成,还包含 TiFlash(列存储引擎)以加速分析型查询。TiDB 支持分布式事务和多种事务模式,适用于 OLTP 和 HTAP 场景,如电商平台和金融系统。此外,TiDB 的部署要求包括高性能硬件配置和特定网络设置,以确保系统的稳定性和高效运行。
|
存储 传感器 算法
Hello World CGAL 5.4入门
Hello World CGAL 5.4入门
201 3
|
消息中间件 存储 缓存
中间件在消息交换调度与缓存
中间件在消息交换调度与缓存中扮演关键角色,确保应用间消息准确、可靠传递,提供消息队列以实现异步处理,提升系统效率。同时,中间件通过缓存机制减少后端访问,降低延迟,保证数据一致性。例如,RabbitMQ、Kafka处理消息队列,Redis、Memcached用于分布式缓存,Dubbo、gRPC实现服务调度。选择合适中间件对于分布式系统及微服务架构的性能和可扩展性至关重要。
181 1
|
人工智能 算法 小程序
AI算命:千亿市场的好生意?
明知被骗,却依然甘愿掉入AI算命的陷阱。
AI算命:千亿市场的好生意?
|
并行计算 Java C#
【AXI】解读AXI协议原子化访问
【AXI】解读AXI协议原子化访问
【AXI】解读AXI协议原子化访问
|
Ubuntu 虚拟化
Ubuntu系统 安装与配置 常见异常与解决办法
解决办法:以管理员方式打开cmd命令,输入netsh winsock reset(这个命令是重置网络规范,黑屏的原因很可能就是VMware软件跟本地网络规范有冲突),回车之后提示成功重置winsock目录,您必须重新启动计算机才能重新完成配置。重启后打开即可。
Ubuntu系统 安装与配置 常见异常与解决办法
|
存储 关系型数据库 MySQL
【MySQL】max_heap_table_size=64M,是干什么的?底层原理是什么?
【MySQL】max_heap_table_size=64M,是干什么的?底层原理是什么?
1150 0