ArkUI查询和操作自定义节点指南
介绍
本示例展示了如何通过使用以下接口,高效地访问和操控节点:
| 接口 | 接口描述 |
|---|---|
| OH_ArkUI_NodeUtils_GetNodeUniqueId | 获取目标节点的uniqueId。 |
| OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId | 通过uniqueId获取节点。 |
| OH_ArkUI_NodeUtils_MoveTo | 将节点移动到目标父节点下,作为子节点。 |
| OH_ArkUI_NativeModule_InvalidateAttributes | 在当前帧触发节点属性更新。当前节点的属性在构建阶段之后被修改,这些改动不会立即生效,而是会延迟到下一帧统一处理。此功能会强制当前帧内的即时节点更新,确保同步应用渲染效果。 |
| OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand | 获取目标节点在树上的第一个子节点的下标。 |
| OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand | 获取目标节点在树上的最后一个子节点的下标。 |
| OH_ArkUI_NodeUtils_GetChildWithExpandMode | 用不同的展开模式获取对应下标的子节点。 |
示例文档
效果预览
| 首页 | InquireUniqueId | Attribute | MoveTo | GetNodeById | FetchAndLoad |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
具体实现
查询节点uniqueId及通过uniqueId获取节点信息
- 基于接入ArkTS页面,创建前置工程;
- 调用OH_ArkUI_NodeUtils_GetNodeUniqueId接口和OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId接口;
- 点击按钮,查看日志;
通过用户id获取节点信息
- 基于接入ArkTS页面,创建前置工程;
- ArkTS侧接入Native组件;
- 创建Text节点并设置id属性,通过OH_ArkUI_NodeUtils_GetAttachedNodeHandleById接口拿到节点;
- 挂载Native节点;
- 运行程序,点击按钮,打印节点获取成功信息;
移动节点
- 基于接入ArkTS页面,创建前置工程;
- ArkTS侧接入Native组件;
- 创建Stack节点,通过OH_ArkUI_NodeUtils_MoveTo接口移动Stack节点;
- 挂载Native节点;
- 运行程序,点击按钮,Stack节点会移动到目标位置;
在当前即时帧触发节点属性更新
- 基于接入ArkTS页面,创建前置工程;
- ArkTS侧接入Native组件;
- 设置组件属性;
- 挂载Native节点;
- 运行程序,点击按钮,切换图片正常展示;
用不同的展开模式获取对应下标的子节点
- 基于接入ArkTS页面,创建前置工程;
- 通过ArkTS构造LazyForEach及ArkTS的下树节点;
- 通过OH_ArkUI_NodeUtils_GetAttachedNodeHandleById接口获取ArkTS组件,并通过懒展开模式获取对应的子组件信息;
- 查看日志打印的对应错误码返回是否正确;
使用说明
- 安装编译生成的hap包,并打开应用;
- 进入首页,可选择不同模块页面。
- 点击Text选择框进入Text组件的CAPI接口展示界面;
- 点击Swiper选择框进入Swiper组件的CAPI接口展示界面;
- 点击Public选择框进入通用属性的CAPI接口展示界面;
- 点击Form选择框进入表单组件的CAPI接口展示界面;
- 点击ImageSpan选择框进入ImageSpan组件的CAPI接口展示界面;属性值设置为“none”时,图片效果以代码默认值展示。
工程目录
entry/src/main/cpp/
├── ArkUIBaseNode.h
├── ArkUINode.h
├── Attribute_util.h
├── CMakeLists.txt (CMake脚本)
├── GetNodeByIdExample.h
├── InquireUniqueId.cpp
├── InquireUniqueId.h
├── GridIrregularIndexesMaker.h
├── MoveTo.h
├── napi_init.cpp
├── NativeEntry.cpp
├── NativeEntry.h
├── NativeModule.h
└── ShowSubcomponentInfo.h
entry/src/main/ets/
├── entryability
│ └── EntryAbility.ets
├── entrybackupability
│ └── EntryBackupAbility.ets
└── pages
├── Attribute.ets (Form页面)
├── FetchAndLoad.ets (Form页面)
├── GetNodeById.ets (Form页面)
├── Index.ets (获取导航页面)
├── InquireUniqueId.ets (Grid页面)
└── MoveTo.ets (imagespan页面)
entry/src/main/resources/
├── base
│ ├── element
│ │ ├── color.json
│ │ ├── float.json
│ │ └── string.json
│ ├── media
│ │ ├── background.png
│ │ ├── foreground.png
│ │ ├── layered_image.json
│ │ └── startIcon.png
│ └── profile
│ ├── backup_config.json
│ └── main_pages.json
├── dark
│ └── element
│ └── color.json
└── rawfile
entry/src/ohosTest/ets/test
├── Ability.test.ets
├── List.test.ets
└── Public.test.ets (通用属性测试用例)
相关权限
不涉及
依赖
不涉及
约束和限制
-
本示例支持标准系统上运行,支持设备:华为手机;
-
本示例支持API22版本SDK,版本号:6.0.2.54;
-
本示例已支持使DevEco Studio 5.1.1 Release (构建版本:5.1.1.840,构建 2025年9月20日)编译运行
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo ArkUISample/NdkNodeQueryOperate > .git/info/sparse-checkout
git remote add origin https://gitcode.com/harmonyos_samples/guide-snippets.git
git pull origin master





