ArkUI(方舟开发框架)是一套构建HarmonyOS应用界面的UI开发框架,它提供了极简的UI语法与包括UI组件、动画机制、事件交互等在内的UI开发基础设施,以满足应用开发者的可视化界面开发需求。
ArkUI的基本概念分为以下两部分。
· 组件:组件是界面搭建与显示的最小单位。开发者通过多种组件的组合构建出满足自身应用诉求的完整界面。
· 页面:Page页面是ArkUI最小的调度分隔单位。开发者可以将应用设计为多个功能页面,每个页面进行单独的文件管理,并通过页面路由API完成页面间的调度管理,以实现应用内功能的解耦。
我们以2.4节中的Index.ets代码为例:
上述代码中,Index和Second就是页面,而Row、Column、Text、Button等都是ArkUI的组件。
Index和Second这两个页面是通过页面路由API完成页面间的调度管理的,以实现应用内功能的解耦。
ArkUI的主要特征如下。
· UI组件:ArkUI内置了丰富的多态组件,包括Image、Text、Button等基础组件,可包含一个或多个子组件的容器组件、满足开发者自定义绘图需求的绘制组件以及提供视频播放能力的媒体组件等。其中“多态”是指组件针对不同类型设备进行了设计,提供了在不同平台上的样式适配能力。同时,ArkUI也支持用户自定义组件。
· 布局:UI界面设计离不开布局的参与。ArkUI提供了多种布局方式,不仅保留了经典的弹性布局能力,还提供了列表、宫格、栅格布局和适应多分辨率场景开发的原子布局能力。
· 动画:ArkUI对于UI界面的美化,除组件内置动画效果外,还提供了属性动画、转场动画和自定义动画能力。
· 绘制:ArkUI提供了多种绘制能力,以满足开发者的自定义绘图需求,支持绘制形状、颜色填充、绘制文本、变形与裁剪、嵌入图片等。
· 交互事件:ArkUI提供了多种交互能力,以满足应用在不同平台通过不同输入设备进行UI交互响应的需求,默认适配触摸手势、遥控器按键输入、键鼠输入,同时提供了相应的事件回调以便开发者添加交互逻辑。
· 平台API通道:ArkUI提供了API扩展机制,可通过该机制对平台能力进行封装,提供风格统一的JS接口。
· 两种开发范式:ArkUI针对不同的应用场景以及不同技术背景的开发者提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称声明式开发范式)和兼容JS的类Web开发范式(简称类Web开发范式)。
JS(JavaScript的简写)、TS(TypeScript的简写)和ArkTS都是开发语言,其中,TS是JS的超集,而ArkTS在TS的基础上扩展了声明式UI、状态管理等相应的能力,让开发者能够以更简洁、更自然的方式开发高性能应用。ArkTS会结合应用开发和运行的需求持续演进,包括但不限于引入分布式开发范式、并行和并发能力增强、类型系统增强等方面的语言特性。因此,三者的关系如图3-1所示。
图3-1 框架结构
ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件以及实时界面预览工具,帮助开发者提升HarmonyOS应用界面开发效率的30%。只需使用一套ArkTS API,就能在多个HarmonyOS设备上提供生动而流畅的用户界面体验。
ArkCompiler(方舟编译器)是华为自研的统一编程平台,包含编译器、工具链、运行时等关键部件,支持高级语言在多种芯片平台的编译与运行,并支撑应用和服务运行在手机、个人计算机、平板电脑、电视、汽车和智能穿戴设备等多种设备上。ArkCompiler会把ArkTS、TS、JS编译为方舟字节码,运行时直接运行方舟字节码。同时,ArkCompiler使用多种混淆技术提供更高强度的混淆与保护,使得HarmonyOS应用包中装载的是多重混淆后的字节码。ArkCompiler框架结构如图3-2所示。
图3-2 框架结构