
OpenHarmony知识体系
文章平均质量分 70
GeorgeGcs
HarmonyOS认证创作先锋,华为HDE专家,鸿蒙讲师,作者。目前任职鸿蒙应用架构师。
历经腾讯,宝马,研究所,金融。
待过私企,外企,央企。
深耕大应用开发领域十年。
OpenHarmony,HarmonyOS,Flutter,H5,Android,IOS。
展开
-
【HarmonyOS 5】鸿蒙中的UIAbility详解(二)
今天我们继续深入讲解UIAbility,根据下图可知,在鸿蒙中UIAbility继承于Ability,开发者无法直接继承Ability。只能使用其两个子类:UIAbility和ExtensionAbility。本文将对UIAbility的三种启动模式,数据如何传递,订阅UIAbility生命周期变化,订阅设备的信息变化进行讲解。原创 2025-05-29 20:13:52 · 819 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙应用px,vp,fp概念详解
目前的鸿蒙开发者,大多数是从前端或者传统移动端开发方向,转到鸿蒙应用开发方向。前端开发同学对于开发范式很熟悉,但是对于工作流程和开发方式是会有不适感,其实移动应用开发与前端开发,最大的区别就在于UI适配和性能优化上了。今天我们就来分析下鸿蒙中UI适配的规范与小窍门。原创 2025-05-29 19:13:19 · 1034 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙中的UIAbility详解(一)
获取应用配置信息(如包名、Ability名称等),或调用操作Ability的方法(如启动、终止Ability)。UIAbility 是 HarmonyOS 应用框架的核心组件,负责管理应用的用户界面生命周期和上下文信息。Stage模型中的组件类型名,即UIAbility组件,包含UI,提供展示UI的能力,主要用于和用户交互。申请系统资源(如定位、传感器权限)、恢复后台释放的资源。释放全局资源、清理内存(如关闭网络连接、注销监听器)。)、订阅窗口事件(如前后台切换、焦点变化)。生命周期中设置默认加载页面。原创 2025-05-21 00:03:36 · 833 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙中进度条的使用详解
HarmonyOS的ArkUI框架为开发者提供了多种类型的进度条,每种类型都有其独特的样式,以满足不同的设计需求。:这是最常见的进度条样式,以直线的形式展示进度。从API version 9开始,当组件高度大于宽度时,它会自适应垂直显示;当高度和宽度相等时,保持水平显示。:这种进度条呈环形,通过环形圆环的逐渐填充来显示进度,默认前景色为蓝色,默认strokeWidth进度条宽度为2.0vp。:它显示类似时钟刻度形式的进度展示效果。原创 2025-05-08 10:40:00 · 805 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙页面和组件生命周期函数
关键点在于函数名字中的page,例如onPageShow,onPageHide这两个就是页面独有。并且还有个特殊的函数,即:返回按钮触发函数,onBackPress。只需要记住,只有页面才能响应返回按钮即可。在 ArkUI 中,页面组件指的是被@Entry装饰的组件,其拥有独特的生命周期接口,这些接口对页面在不同状态下的行为控制起着关键作用。build 方法执行完毕后调用,可用于数据初始化或额外的 UI 调整。首先我们需要理解页面和自定义组件的概念。用户点击返回按钮时调用。组件挂载到页面后调用。原创 2025-05-08 10:58:10 · 583 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙Web组件和内嵌网页双向通信DEMO示例
在 ArkUI 开发中,Web 组件(Web)允许开发者在应用内嵌入网页,实现混合开发场景。本文将通过完整 DEMO,详解如何通过WebviewController实现 ArkUI 与内嵌网页的双向通信,涵盖 ArkUI 调用网页 JS、网页调用 ArkUI 对象的核心技术点。原创 2025-05-07 17:09:17 · 869 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙中常见的标题栏布局方案
使用Flex布局将返回按钮、标题文字和帮助按钮水平排列,通过justifyContent: FlexAlign.SpaceBetween使三个组件在水平方向上均匀分布,alignItems: ItemAlign.Center使组件在垂直方向上居中对齐。使用Stack布局将三个组件堆叠在一起,通过position属性分别设置返回按钮和帮助按钮的位置,标题文字通过alignContent: Alignment.Center使其在布局中居中显示。常见的思维是,有老铁使用row去布局,怎么都对不齐。原创 2025-05-07 15:59:19 · 479 阅读 · 0 评论 -
【HarmonyOS 5】AttributeModifier和AttributeUpdater详解
是ArkUI组件的动态属性,提供属性设置功能。开发者可使用attributeModifier方法,通过自定义实现AttributeModifier接口,来动态设置组件属性。详情参见官方API文档是ArkUI框架提供的属性更新器。用于更新属性的给组件触发 UI 更新。需从@kit.ArkUI导入模块,开发者自定义类继承AttributeUpdater。instanceinstanceCcomponent详情参见官方API文档。原创 2025-04-15 12:05:54 · 802 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙实现手写板
创建一个可交互的组件,用户在屏幕上触摸并移动手指时,会根据触摸的位置动态生成路径,并使用黑色描边绘制在屏幕上。当用户按下屏幕时,记录按下点的坐标作为路径的起点。当用户移动手指时,不断记录移动点的坐标,通过线段连接起来形成路径。原创 2025-04-13 12:10:40 · 1307 阅读 · 0 评论 -
【HarmonyOS 5】敏感信息本地存储详解
鸿蒙其实自身已经通过多层次的安全机制,确保用户敏感信息本地存储安全。不过再此基础上,用户敏感信息一般三方应用还需要再进行加密存储。本文章会从鸿蒙自身的安全机制进行展开,最后再说明本地敏感信息常规存储的方案。原创 2025-04-13 12:01:28 · 1278 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙中@State的原理详解
是 HarmonyOS ArkTS 框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动 UI 的响应式编程模式。通过装饰器在变量的 getter 中注入依赖收集逻辑,记录当前组件对该状态的依赖关系。是 HarmonyOS ArkTS 实现响应式编程的大基础核心,可以说整个V1和V2都是围绕它来进行组合使用。框架遍历所有依赖该状态的组件,并调用其更新方法重新渲染 UI。:仅重新渲染依赖该状态的组件,提升性能。修饰的变量在 UI组件 中的使用情况。被修改时,框架会检测到值的变化。原创 2025-04-10 12:04:53 · 856 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙的装饰器原理和自定义装饰器
一、鸿蒙中的装饰器是什么?在ArkTS中装饰器(Decorator)是一种特殊的声明,能够对类、方法、属性等进行标注和修改。因为ArkTS 是TypeScript 扩展而来的编程语言,TypeScript 支持装饰器特性。它属于元编程的一种工具,可在不改变原有代码结构的基础上,为其添加额外的功能。比如在鸿蒙开发里,装饰器能够用来定义组件的属性、生命周期方法等。像@Component装饰器就用于把一个类标记成鸿蒙的组件类。原创 2025-04-10 11:45:32 · 1374 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙中如何使用MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级、基于发布 / 订阅(Publish/Subscribe)模式的即时通讯协议,专为资源受限的物联网(IoT)设备和低带宽、高延迟或不可靠网络环境设计。目前在物联网,车载,即时通讯,JG领域用的很多。MQTT模式是有个服务器,若干个客户端,订阅Topic作为事件ID,用来订阅广播,发送广播。在鸿蒙(HarmonyOS)中使用MQTT协议主要通过官方提供的@ohos/mqtt库实现。原创 2025-04-09 10:51:53 · 679 阅读 · 0 评论 -
【HarmonyOS 5】使用openCustomDialog如何禁止手势关闭的方案
在HarmonyOS中使用自定义弹框时,我们会遇到实现禁止手势关闭弹框的业务场景。虽然在 HarmonyOS Next 中,自定义 Dialog 默认可能继承系统的侧滑返回手势,并且目前无法屏蔽,官方反馈未来版本可能会开放禁用选项。在当前版本中,目前无法完全禁止手势关闭,但可以通过一些方法进行控制。例如,监听 onWillDismiss 事件可以在关闭时进行拦截,但需要处理不同的关闭原因。原创 2025-04-09 10:39:48 · 755 阅读 · 0 评论 -
【HarmonyOS 5】初学者如何高效的学习鸿蒙?
在全球科技格局风云变幻的当下,谷歌安卓系统的管控逐步收紧,加之国际形势愈发复杂,打造中国人自主的操作系统,已成为时代发展的必然要求,这不仅是突破技术瓶颈的关键之举,更是构建国内自主生态闭环的核心所在。鸿蒙操作系统,正是顺应这一趋势的前沿探索,其研发代表了我国操作系统领域的重要方向。2021 年 6 月 2 日,华为举办鸿蒙操作系统及华为全场景新品发布会,正式发布面向智能手机的鸿蒙操作系统 2.0 版本,并且支持 Java 语言进行开发。原创 2025-03-29 18:17:18 · 1435 阅读 · 0 评论 -
【HarmonyOS NEXT】EventHub和Emitter的使用场景与区别
和EventHub不同的是,事件广播的内容,也进行了约束。发送事件时传递的数据,支持数据类型包括Array、ArrayBuffer、Boolean、DataView、Date、Error、Map、Number、Object、Primitive(除了symbol)、RegExp、Set、String、TypedArray,数据大小最大为16M。标准的事件广播通知,订阅,取消订阅的处理。多了事件id和优先级的概念。获得到EventHub单例对象后,就可以调用emit发送事件,on监听事件,off取消监听事件。原创 2025-03-26 22:49:06 · 1399 阅读 · 0 评论 -
【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解
综上所述,HAR 是静态共享包,HSP 是动态共享包,它们和 HAP(应用的基本功能模块)一起被打包成 App Pack(应用发布形态)用于应用的发布与分发。原创 2025-03-19 23:38:42 · 1580 阅读 · 0 评论 -
【HarmonyOS Next】鸿蒙应用加载SVG文件显示图标
r 是资源引用函数,media.icon 表示引用 media 目录下名为 icon 的资源文件。这里会加载 entry/src/main/resources/base/media 目录下的 icon.svg 文件。SVG 使用 XML 文本格式来描述图形,与传统的位图图像(如 JPEG、PNG 等)不同,SVG 图形是由一系列的点、线、形状和颜色定义组成的,而不是像素点。首先将 SVG 文件放置在项目的 entry/src/main/resources/base/media 目录下。原创 2025-03-10 10:47:09 · 542 阅读 · 0 评论 -
【HarmonyOS Next】鸿蒙循环渲染ForEach,LazyForEach,Repeat使用心得体会
Repeat提供了两种模式non-virtualScroll模式和virtualScroll模式。non-virtualScroll模式类似于ForEach的使用。渲染短数据列表、组件全部加载的场景。@Entry@Local tempList: Array<string> = ['第一行代码', '开发艺术探索', '入门到精通'];build() {Row() {Column() {Text('点击修改第1个数组项的值')原创 2025-02-24 14:34:54 · 1471 阅读 · 0 评论 -
【HarmonyOS Next】鸿蒙应用进程和线程详解
进程是系统进行资源分配的基本单位,是操作系统结构的基础。在鸿蒙系统中,一个应用下会有三类进程(1)主进程(2)ExtensionAbility进程,同一种类型的ExtensionAbility会放在一个进程里。例如FromExtensionAbility,创建了两个,也会在同一个进程里。ExtensionAbility组件(3)WebView渲染进程,用于网页容器渲染的进程。【这种设计提升了鸿蒙系统中arkWeb的网页容器渲染能力】原创 2025-02-19 16:59:20 · 1056 阅读 · 0 评论 -
【HarmonyOS Next】鸿蒙监听手机按键
应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。这两种需求,鸿蒙都提供了对应的监听事件进行处理。onKeyEvent 默认的按钮监听事件onKeyPreIme 这是优先级最高的监听回调,别上面多了一个return开关,用于告诉系统监听事件是否再向下传递。窗口是第一级接收按钮事件的实体。后续会传递给后三级。原创 2025-02-19 14:55:23 · 1194 阅读 · 3 评论 -
【HarmonyOS NEXT】systemDateTime 时间戳转换为时间格式 Date,DateTimeFormat
在鸿蒙应用开发中,经常需要将时间戳转化为标准时间格式。即:一串数字转化为年月日时分秒。时间戳通常是一个长整型的数字,如,对于普通用户来说,这个数字没有实际的意义,他们难以从中获取到有用的时间信息。而将其转换为常见的时间格式,如,用户可以直观地了解到具体的日期和时间,极大地提升了信息的可读性。因为鸿蒙应用开发使用ArkTS包含于TypeScript语言,所以我们可以通过传统的Date对象解析进行时间戳转化时间格式的处理。不过在鸿蒙系统API中,提供了用于国际化时间格式转化的接口。原创 2025-02-07 17:23:04 · 1771 阅读 · 0 评论 -
【HarmonyOS NEXT】鸿蒙应用点9图的处理(draw9patch)
首先在鸿蒙中是不支持安卓 .9图的图片直接使用。只有类似拉伸的处理方案,鸿蒙提供的Image组件有与点九图相同功能的API设置。可以通过设置resizable属性来设置ResizableOptions,也就是图像拉伸时可调整大小的图像选项。ResizableOptions的参数slice中有top、left、bottom和right四个属性,分别代表图片上下左右四个方向拉伸时保持不变距离。原创 2025-01-06 20:42:29 · 981 阅读 · 0 评论 -
【HarmonyOS 5】鸿蒙应用代码控制横竖屏切换,自动切换横竖屏,监听横竖屏以及注意事项
鸿蒙应用代码控制横竖屏切换,自动切换横竖屏,监听横竖屏以及注意事项原创 2025-01-03 16:23:13 · 1194 阅读 · 1 评论 -
【HarmonyOS NEXT】解决自定义弹框遮挡气泡提示的问题
弹框和气泡,dialog和toast。是我们应用开发中常用的两种提示媒介。在鸿蒙应用中,如果自定义弹框在底部展示时,又弹出气泡进行提示,会发现气泡在弹框层级之下。会被遮挡住,影响气泡的显示。原创 2024-12-30 18:32:05 · 548 阅读 · 0 评论 -
【HarmonyOS NEXT】解决自定义弹框和键盘之间安全距离的问题
我们在应用开发评论输入框时,常规的需求样式是:输入框view和键盘贴近,上半部展示信息区的形式,这样的设计,方便用户不割裂的去评论发言。但是在使用鸿蒙提供的自定义弹框时,会发现键盘和弹框之间有个安全空隙。就算弹框布局是置底,每次显示键盘都会将弹框顶上去。自定义弹框源码@Componentcontroller?build() {Column() {})@Entry@Component}),},})// 在自定义组件即将析构销毁时将dialogController置空。原创 2024-12-30 17:20:07 · 1478 阅读 · 3 评论 -
【HarmonyOS NEXT】鸿蒙应用压缩和解压处理
鸿蒙应用中经常会遇到使用压缩包的场景。例如H5的离线包逻辑,需要提前将资源包下载到本地,进行压缩操作获取资源。原创 2024-12-27 17:17:43 · 1568 阅读 · 0 评论 -
【HarmonyOS NEXT】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下
应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将资源文件夹Resource-RawFile下的文件存放到沙箱目录下。在鸿蒙系统中,文件存储分为不同的域,如应用内部存储(应用私有目录)和外部存储(公共目录等)。而rawfile是一种资源文件类型,通常在应用开发过程中作为原始文件被打包进应用的资源目录。在鸿蒙中,应用仅能保存文件到“应用文件目录”下,根据目录的使用规范和注意事项来选择将数据保存到不同的子目录中。原创 2024-12-26 18:53:52 · 1344 阅读 · 0 评论 -
【HarmonyOS NEXT】如何读取Raw下的JSON文件内容
读取工程中/resources下json文件,json文件推荐放在rawfile路径下,通过getRawFileContent接口访问。但是通过该接口拿到的是Uint8Array类型数据,那怎么拿到JSON的文本内容?2.通过util.TextDecoder设置编码,解析字节流内容转化为string文本。1.首先通过getRawFileContent拿到文件的字节流内容。原创 2024-12-24 11:02:48 · 814 阅读 · 0 评论 -
【HarmonyOS NEXT】HarmonyOS和React Native混合开发 (一)之环境安装
React Native 也是声明式的组件开发,与ArkTS类似。相较于React Native在Android和IOS上,将js和react组件代码转化成对应的原生UI控件,实现原生UI的思路。HarmonyOS和React Native混合开发首先需要安装各自的开发环境。直接将js和react组件代码转化成了ArkUI的后台Cpp信息,并非转化为ArkUI控件,这样的思路提升了很高的渲染效率。与flutter不同的是,RN偏向于前端开发语言去实现跨平台应用的效果。而前者的开发思路偏重。原创 2024-12-19 22:15:58 · 1609 阅读 · 0 评论 -
【HarmonyOS NEXT】获取设备自定义名字
应用开发中我们经常需要拿到设备名称,非设备的品牌名称。例如,meta 60 Pro这种。而是用户自定义的设备名称。但是鸿蒙针对用户信息的保护非常严格。想拿到设备名称,通过常规的DeviceInfo接口,是拿不到设备名称。其他能拿到设备名称的接口,也需要是系统应用,或者受限权限申请。原创 2024-12-19 14:52:00 · 919 阅读 · 0 评论 -
【HarmonyOS NEXT】HarmonyOS 和 Flutter混合开发 (一)之鸿蒙Flutter环境安装
flutter作为开源适配框架方案,已经在Android,IOS,Web,Window四大平台进行了适配,一套代码,可以同时展现在多个平台。所以Flutter适配鸿蒙也正式发布了。经过了今年的迭代,已经逐渐稳定中,虽然没有RN框架在鸿蒙上的适配速度快,但是也可以商用了。跨平台为何选择Flutter。原创 2024-12-19 00:09:39 · 5023 阅读 · 0 评论 -
【HarmonyOS NEXT】鸿蒙应用实现手机摇一摇功能
手机摇一摇功能,是通过获取手机设备,加速度传感器接口,获取其中的数值,进行逻辑判断实现的功能。在鸿蒙中手机设备传感器@ohos.sensor (传感器)的系统API@ohos.sensor (传感器)官网API加速度传感器环境光传感器气压计传感器重力传感器陀螺仪传感器霍尔传感器心率传感器湿度传感器线性加速度传感器地磁传感器方向传感器计步器传感器接近光传感器旋转矢量传感器大幅动作检测传感器佩戴检测传感器其中。原创 2024-12-12 11:07:40 · 2125 阅读 · 0 评论 -
【HarmonyOS】View点击穿透,层叠View点击事件控制
在HarmonyOS中,经常会有层叠的View的布局,当碰到需要穿透的布局需求。就需要能控制View对点击事件的处理。默认触摸测试效果,自身和子节点都响应触摸测试,但会阻塞兄弟节点的触摸测试。touchable(false) 不处理点击,点击事件就会有穿透效果。自身和子节点都响应触摸测试,不会阻塞兄弟节点的触摸测试。自身不响应触摸测试,不会阻塞子节点和兄弟节点的触摸测试。目前虽然函数已提示过时,会有斜线,但是改方法比较简单。自身响应触摸测试,阻塞子节点和兄弟节点的触摸测试。原创 2024-05-28 20:00:00 · 1645 阅读 · 0 评论 -
【HarmonyOS NEXT】使用AVPlayer播放音乐,导致系统其它应用音乐播放暂停 - 播放音频焦点管理
在鸿蒙系统中,对于音乐播放分为几种场景。音乐,电影,音效,闹钟等。当使用AVPlayer播放音乐时,如果不处理播放焦点模式,默认会交给系统处理。系统处理多个音乐播放时,会按照触发顺序依次暂停当前,再继续下一个。例如当华为音乐应用正在播放音乐,此时你的应用使用AVPlayer进行音乐播放,就会导致华为音乐播放暂停,开始播放你的音乐。如果你的是音乐应用,默认这样处理是OK的。但是如果你使用AVPlayer播放一个短时音乐或者音效。那这样处理就不好了。这个问题实际上是播放焦点管理,如果不管理就会造成冲突。原创 2024-12-09 20:41:14 · 1371 阅读 · 0 评论 -
【HarmonyOS NEXT】滑动选中放大卡片效果
2.根据数据量决定是否使用赖加载来提升性能,若数据量较小,可以直接使用Foreach循环。3.居中项放大使用放大动画实现,居中index根据list回调来更新。1.使用list实现横向滚动列表的效果。【完整代码请参考章节三】原创 2024-12-06 11:19:39 · 301 阅读 · 0 评论 -
【HarmonyOS NEXT】层级轮播卡片效果
5.细磨效果,添加透明度动画润色过渡操作的效果。(为了效果更好后续也可添加移动,放大缩小等。示例代码只是添加了透明度。4.调整切换的index下标数据,控制数据切换,和逻辑计算。1.最上层使用swiper进行轮播效果的实现。2.下层两个卡片使用stack堆叠,依次显示。3.整体卡片内容通过list数据进行链式切换。2.上层卡片可手势左右滑动,自动左滑动。3.三层卡片随滑动,内容进行依次切换。1.上下堆叠由大到小的卡片层叠效果。【完整代码见章节三】原创 2024-12-06 11:02:54 · 864 阅读 · 0 评论 -
【HarmonyOS NEXT】鸿蒙获取手势触摸点的屏幕全局坐标
通过平移手势,在动作开始前,动作中,动作后,三个回调触摸事件中,有fingerList属性,可以拿到FingerInfo对象,其中的global坐标可以拿到屏幕全局坐标。在Android和IOS中,使用手势触摸事件的x,y坐标,做一些逻辑处理。比如拖动小窗口,滑动触摸响应tips文字内容等。都需要拿到手势触摸点的屏幕全局坐标。根据业务需求的不同,可以挑选global,local,display三种类型的坐标使用。比如根据手势x坐标,去提示对应区域的文字内容。原创 2024-12-03 16:46:46 · 644 阅读 · 0 评论 -
【HarmonyOS NEXT】鸿蒙应用使用lottie动画
Lottie是由Airbnb团队开发的一个适用于iOS、Android、React Native、Web和Windows的开源动画库,用于解析使用Bodymovin导出为JSON的Adobe After Effects动画,实时渲染AE动画并在设备上呈现它们!建议放置到Entry目录下,创建common文件夹下,其中创建lottie文件夹,存放动画资源。在模块的oh-package.json5配置中,添加一下库版本依赖:(2.0.14为当前最新版本,以动画三方库地址的版本为准)原创 2024-12-03 11:30:23 · 1793 阅读 · 0 评论 -
【HarmonyOS NEXT】自定义相机拍照和录像 (二)之录像
大体开发思路与相机拍照思路相同,都是通过CameraKit进行相机设备调用,视频输入输出流和会话的绑定,在会话里设置相关参数。唯一与拍照不同的区别是,通过avRecorder进行录像生命周期的管理,开始录像,暂停录像都是通过这个渲染播放对象进行管控。相对于拍照而言,录像的开发要麻烦一些。原创 2024-11-28 14:28:16 · 1108 阅读 · 0 评论