目录

自定义节点概述

自定义节点是ArkUI通过接口提供的底层实体节点,具备部分基础能力,能够与系统组件混合显示。自定义节点的挂载与显示依赖于自定义占位节点。当前,自定义节点涵盖三类对象:FrameNode、RenderNode和BuilderNode。FrameNode表示单个自定义组件节点,RenderNode表示为更轻量级的渲染节点,而BuilderNode对象赋予了创建、更新系统组件及其组件树的能力。

基本概念

约束与限制

自定义占位节点

自定义占位节点作为系统组件可以在组件树上为自定义节点提供挂载的点。通过自定义占位节点,可以将自定义节点挂载在占位节点上,实现自定义节点与系统组件的混合显示。

自定义组件节点 (FrameNode)

FrameNode表示组件的实体节点,具体可以分为两大类能力:完全自定义节点的能力以及系统组件节点代理的能力。

自定义渲染节点 (RenderNode)

RenderNode作为轻量级的渲染节点,仅提供了设置渲染相关属性、自定义绘制内容以及节点操作的能力。适用于仅依赖系统渲染与动画能力的自定义场景。

自定义声明式节点 (BuilderNode)

BuilderNode通过无状态的UI方法全局自定义构建函数@Builder生成组件树,组件树内的节点为系统组件。适用于需要基于系统能力创建特定组件树与其他自定义节点进行混合显示的场景。相比较系统组件,BuilderNode具备预创建的优势,可以控制开始创建的时间。由于持有实体节点对象,因此可以同步实现节点的复用,通过占位节点结合FrameNode、RenderNode的节点操作能力控制显示位置。

设置自定义节点跨语言属性

ArkUI支持在前端使用ArkTS语言创建命令式节点,即FrameNode节点,也可以在Native侧使用C语言创建命令式节点,并且可以混合使用两类节点构建页面。针对上述场景,ArkUI提供命令式节点跨语言属性设置功能,即使用ArkTS语言创建的命令式节点,可以在Native侧进行属性设置。使用C语言创建的节点,可以在ArkTS侧进行属性设置。

组件动态创建开发实践

ArkUI声明式开发范式下,常规组件需在build方法内静态声明构建,页面渲染时统一执行构建逻辑,难以满足运行时按需生成、动态增删组件、预创建复用组件、服务端下发布局等灵活开发场景。为此,ArkUI提供组件动态创建能力,依托FrameNode、BuilderNode、NodeController、NodeContainer等底层节点与容器能力,以命令式方式在运行时完成组件的创建、属性配置、布局控制、事件绑定、增删替换与局部更新。