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

Harmony OS 开发-ArkUI框架速成一

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前!


1.ArkUI

1.1 ArkUI

ArkUI是一套构建分布式应用界面的声明式UI开发框架。使用简洁的UI信息语法、丰富的UI组件、以及实时界面预览工具,提升HarmonyOS应用界面开发效率30%。只需使用一套ArkTS API,就能在多个HarmonyOS设备上提供生动而流畅的用户界面体验。

方舟开发框架(简称:ArkUI),是一套 构建HarmonyOS应用 界面 的框架。在Harmony OS的App开发中,构建页面的最小单位就是 "组件",每个页面也就是ArkTS文件,后缀名为xxx.ets。

1.2 ArkUI的更新机制

ArkUI 通过使用编译器生成特定函数的方式将UI组件更新和数据变更进行细粒度地绑定,实现UI更新Diff算法从COMPONENT和ELEMENT树形结构对比升级为单节点NODE的函数式更新,大幅简化了声明式开发范式UI组件的树形结构,大幅度优化了UI组件布局渲染性能。

1.3 基本概念

1.UI:

即用户界面。开发者可以将应用的用户界面设计为多个功能页面,每个页面进行单独的文件管理,并通过页面路由API完成页面间的调度管理如跳转、回退等操作,以实现应用内的功能解耦。

2.组件:

UI构建与显示的最小单位,如列表、网格、按钮、单选框、进度条、文本等。我们通过多种组件的组合,构建出满足自身应用诉求的完整界面。

1.4 ArkUI的开发范式

针对不同的应用场景及技术背景,方舟UI框架提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)。

1.声明式开发范式:

采用基于TypeScript声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供UI绘制能力。

2.类Web开发范式:

采用经典的HML、CSS、JavaScript三段式开发方式,即使用HML标签文件搭建布局、使用CSS文件描述样式、使用JavaScript文件处理逻辑。该范式更符合于Web前端开发者的使用习惯,便于快速将已有的Web应用改造成方舟UI框架应用。

1.5 声明式ArkUI

在开发一款新应用时,推荐采用声明式开发范式来构建UI,主要基于以下3点原因:

1.开发效率:

声明式开发范式更接近自然语义的编程方式,开发者可以直观地描述UI,无需关心如何实现UI绘制和渲染,开发高效简洁。

**2.应用性能: **

如下图所示,两种开发范式的UI后端引擎和语言运行时是共用的,但是相比类Web开发范式,声明式开发范式无需JS框架进行页面DOM管理,渲染更新链路更为精简,占用内存更少,应用性能更佳。

3.发展趋势:

声明式开发范式后续会作为主推的开发范式持续演进,为开发者提供更丰富、更强大的能力。

2.ArkUI

2.1 ArkUI的功能

基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架

1.ArkTS

ArkTS是优选的主力应用开发语言,围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展。

扩展能力包含声明式UI描述、自定义组件、动态扩展UI元素、状态管理和渲染控制。

状态管理作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。

状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。

ArkTS语言的基础知识请参考我之前的文章,关注我,跟着我学起来!

2.布局

布局是UI的必要元素,它定义了组件在界面中的位置。ArkUI框架提供了多种布局方式,除了基础的线性布局、层叠布局、弹性布局、相对布局、栅格布局外,也提供了相对复杂的列表、宫格、轮播。

3.组件

组件是UI的必要元素,形成了在界面中的样子,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。

系统内置组件包括按钮、单选框、进度条、文本等。开发者可以通过链式调用的方式设置系统内置组件的渲染效果。

可以将系统内置组件组合为自定义组件,通过这种方式将页面组件化为一个个独立的UI单元,实现页面不同单元的独立创建、开发和复用,具有更强的工程性。

4.页面路由和组件导航

应用可能包含多个页面,可通过页面路由实现页面间的跳转。一个页面内可能存在组件间的导航如典型的分栏,可通过导航组件实现组件间的导航。

5.图形

方舟开发框架提供了多种类型图片的显示能力和多种自定义绘制的能力,以满足开发者的自定义绘图需求,支持绘制形状、填充颜色、绘制文本、变形与裁剪、嵌入图片等。

6.动画

动画是UI的重要元素之一。优秀的动画设计能够极大地提升用户体验,框架提供了丰富的动画能力,除了组件内置动画效果外,还包括属性动画、显式动画、自定义转场动画以及动画API等,开发者可以通过封装的物理模型或者调用动画能力API来实现自定义动画轨迹。

7.交互事件

交互事件是UI和用户交互的必要元素。方舟开发框架提供了多种交互事件,除了触摸事件、鼠标事件、键盘按键事件、焦点事件等通用事件外,还包括基于通用事件进行进一步识别的手势事件。

手势事件有单一手势如点击手势、长按手势、拖动手势、捏合手势、旋转手势、滑动手势,以及通过单一手势事件进行组合的组合手势事件。

8.自定义能力

自定义能力是UI开发框架提供给开发者对UI界面进行开发和定制化的能力。包括:自定义组合、自定义扩展、自定义节点和自定义渲染。

可以关注我,后续这些都会一一更新,新的一年加油!

2.2 ArkUI特点

1.开发效率高,开发体验好

代码简洁: 通过接近自然语义的方式描述UI,不必关心框架如何实现UI绘制和渲染。 数据驱动UI变化:让开发者更专注自身业务逻辑的处理。

当UI发生变化时,开发者无需编写在不同的UI之间进行切换的UI代码, 开发人员仅需要编写引起界面变化的数据,具体UI如何变化交给框架。 开发体验好:界面也是代码,让开发者的编程体验得到提升。

2.性能优越

声明式UI前端和UI后端分层: UI后端采用C++语言构建,提供对应前端的基础组件、布局、动效、交互事件、组件状态管理和渲染管线。

语言编译器和运行时的优化: 统一字节码、高效FFI(Foreign Function Interface)、AOT(Ahead Of Time)、引擎极小化、类型优化等。

3.生态容易快速推进

能够借力主流语言生态快速推进,语言相对中立友好,有相应的标准组织可以逐步演进。

2.3 ArkUI整体架构图

1.声明式UI前端

提供了UI开发范式的基础语言规范,并提供内置的UI组件、布局和动画,提供了多种状态管理机制,为应用开发者提供一系列接口支持。

2.语言运行时

选用方舟语言运行时,提供了针对UI范式语法的解析能力、跨语言调用支持的能力和TS语言高性能运行环境。

3.声明式UI后端引擎

后端引擎提供了兼容不同开发范式的UI渲染管线,提供多种基础组件、布局计算、动效、交互事件,提供了状态管理和绘制能力。

4.渲染引擎

提供了高效的绘制能力,将渲染管线收集的渲染指令,绘制到屏幕的能力。

5.平台适配层

提供了对系统平台的抽象接口,具备接入不同系统的能力,如系统渲染管线、生命周期调度等。

好啦,今天2025年元旦,就写到这里吧,祝各位新的一年,好远连连,期待我们2025都可逆风翻盘,越来越好!


http://www.kler.cn/a/463726.html

相关文章:

  • PostgreSQL对称between比较运算
  • Qt qtcreator配置cmake
  • 职场常用Excel基础04-二维表转换
  • TT100K数据集, YOLO格式, COCO格式
  • Sublime Text4 4189 安装激活【 2025年1月3日 亲测可用】
  • 【可实战】需求分析-测试计划↓-测试设计-测试执行-测试总结↓(包含测试计划、测试总结模板,以公司要求为准)
  • 【深度学习】多目标融合算法—样本Loss提权
  • 2024 年发布的 Android AI 手机都有什么功能?
  • springboot529基于JavaWeb的本科生交流培养管理平台的设计与实现(论文+源码)_kaic
  • C++:Windows 多线程 简单示例
  • Ubuntu 24.04安装和使用WPS 2019
  • 2412d,d语言中写汇编
  • 机器学习 LightGBM 算法原理解析
  • QT---------GUI程序设计基础
  • Linux下Shell编程之sed命令详解及示例
  • C#语言的字符串处理
  • 上位机开发 的算法与数据结构
  • ƒ () { [native code] } 的解释
  • Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
  • c#枚举和结构体类型详解
  • 【2024年-6月-28日-开源社区openEuler实践记录】探索 easy - software:简化软件部署与管理的开源方案
  • Ubuntu如何安装jdk并切换到不同的jdk版本
  • 【gopher的java学习笔记】mybatis的mapper是什么
  • 【C++】模板使用总结
  • MyBatis执行一条sql语句的流程(源码解析)
  • 深度学习——损失函数汇总