鸿蒙 @ohos.arkui.node

server/2025/3/18 1:08:14/

鸿蒙 @ohos.arkui.node

在鸿蒙开发中,@ohos.arkui.node 模块提供了一系列用于构建和管理自定义节点的 API。这些 API 组织在一起,方便开发者进行导出和使用。本文将详细介绍 @ohos.arkui.node 模块的功能和使用方法。


一、模块功能概述

@ohos.arkui.node 模块提供了以下功能:

(一)BuilderNode 模块

  • 功能:提供能够挂载原生组件的自定义节点 BuilderNode
  • 注意事项:不建议将 BuilderNode 作为子节点挂载到其他自定义节点上。

(二)FrameNode 模块

  • 功能:提供自定义节点 FrameNode,表示组件树的实体节点。
  • 使用方法NodeController 可通过 BuilderNode 持有的 FrameNode 将其挂载到 NodeContainer 上,也可通过 FrameNode 获取 RenderNode,挂载到其他 FrameNode 上。

(三)NodeController 模块

  • 功能:提供 NodeController 用于实现自定义节点的创建、显示、更新等操作。
  • 使用方法:负责将自定义节点挂载到 NodeContainer 上。

(四)Graphics 模块

  • 功能:提供自定义节点相关属性设置的定义。

(五)RenderNode 模块

  • 功能:提供自绘制渲染节点 RenderNode,支持开发者通过 C API 进行开发,完成自定义绘制需求。

(六)XComponentNode 模块

  • 功能:提供 XComponent 节点 XComponentNode,表示组件树中的 XComponent 组件。
  • 使用场景:用于 EGL/OpenGLES 和媒体数据写入,并支持动态修改节点渲染类型。

二、使用 @ohos.arkui.node

(一)导入模块

在鸿蒙 Next 中,可以通过以下方式导入 @ohos.arkui.node 模块:

import {BuilderNode,NodeController,FrameNode,RenderNode,XComponentNode,NodeRenderType,RenderOptions,DrawContext,Size,Offset,Position,Pivot,Scale,Translation,Matrix4,Rotation,Frame
} from '@kit.ArkUI';

(二)创建自定义节点

以下是一个示例代码,展示如何创建自定义节点并挂载到 NodeContainer 上:

@Entry
@Component
struct CustomNodeExample {build() {Column() {// 创建自定义节点BuilderNode() {// 自定义节点的内容Text('This is a custom node').fontSize(20).textAlign(TextAlign.Center)}.id('customNode')}.width('100%').height('100%')}aboutToAppear() {// 获取 UIContextconst uiContext = this.getUIContext();const nodeController = new NodeController(uiContext);// 创建自定义节点const customNode = new BuilderNode('customNode');const frameNode = customNode.getFrameNode();// 将自定义节点挂载到 NodeContainernodeController.makeNode(frameNode, (node) => {nodeController.mount(node);});}
}

三、注意事项

  1. API 版本@ohos.arkui.node 模块的首批接口从 API version 11 开始支持。
  2. 预览器支持:当前不支持在预览器中使用自定义节点。
  3. UIContext 获取:可以通过以下方法获取 UIContext
    • 使用 ohos.window 中的 getUIContext() 方法。
    • 通过自定义组件的内置方法 getUIContext()
    • NodeControllermakeNode 回调方法中获取。

四、总结

@ohos.arkui.node 模块为鸿蒙开发提供了强大的自定义节点功能,支持开发者创建、挂载和管理自定义节点。通过 BuilderNodeFrameNodeNodeController 等模块,开发者可以实现复杂的自定义布局和交互效果。希望本文能帮助你更好地理解和使用 @ohos.arkui.node 模块。如果有任何问题或需要进一步讨论,欢迎随时交流!


http://www.ppmy.cn/server/175822.html

相关文章

大语言模型微调和大语言模型应用的区别?

大语言模型微调和大语言模型应用的区别? 1. 定义与目标 微调(Fine-tuning) 目标:调整预训练模型(如GPT、LLaMA、PaLM)的参数,使其适应特定任务或领域。 核心:通过额外的训练&#x…

Linux的部分常用基础指令

目录 1. ls 指令 2. pwd命令 3. cd 指令 4. touch 指令 5. mkdir指令 6. rmdir指令&&rm指令 7. rm命令可以同时删除文件或目录 8. man指令 9. cp指令 10. mv指令 11. cat 指令 12. more指令 13. less 指令 14. head指令 15. tail 指令 16. find 指令 17. whi…

【Java--数据结构】优先级队列( PriorityQueue)

一. 优先级队列 1.1 优先级队列的概念 优先级队列是一种特殊的队列,它在入队时会根据元素的优先级进行排序,优先级最高的元素排在队列的前面,出队时会优先出队优先级最高的元素。 1.2 优先级队列的区别 (1)与普通…

Spring Retry

1. Spring Retry 的工作原理 内部机制 Spring Retry 主要通过 AOP(面向切面编程)实现重试逻辑。以下是 Spring Retry 的内部工作流程: AOP 拦截器:当一个方法被标记为需要重试,并且该方法抛出了指定类型的异常时&am…

[RN 实践有效]Expo+cross-env配置项目环境变量

首先,从中可以看出,cross-env的主要作用是跨平台设置环境变量,而Expo项目通常通过app.config.js或.env文件来管理这些变量。需要强调安装cross-env的必要性,以及如何在package.json中正确配置脚本命令。 接下来,用户的问题是关于Expo中cross-env的详细配置,因此需要分步骤…

Maven核心包:maven-resolver-api

在阅读 nexus-pubic 开源项目过程中,使用了大量的核心组件进行轻量化集成。它的这种构建方式,在阅读过程中不得不感概,节省成本从构建项目的方式上就遥遥领先了。但是 maven核心包,依然使用前几年的aether-spi,却没有更…

[网络] 网络基础概念--socket编程预备

文章目录 1. 理解 ip 地址和目的 IP 地址 -> 区分主机唯一性2. 认识端口号3. socket 套接字4. 传输层的代表协议 -> tcp & udp5. 网络字节序列 -> 大端序列6. socket 编程接口 继前文, 前文提到了网络传输的基本流程, 那下面我们继续来讨论一点关于网络基础概念的…

ubuntu-linux-系统用户界面无法显示-弹出报警框!

文章目录 简介方法一:使用第二用户使用文本控制台 方法二:结语扩展(请务必阅读) 简介 请创建第二用户或者准备u盘启动盘(ubuntu系统就行)! 原因:本人电脑在后续的开机过程中&#x…