接入ArkTS页面指南文档示例
介绍
本示例通过使用ArkUI开发文档中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接:
效果预览
| 首页 |
|---|
![]() |
使用说明
- 在主界面,点击按钮,会出现多行文本组件,且该界面可以滑动。
工程目录
entry/src/main/cpp/
|---types
| |---index.d.ts //应用启动页,加载承载Native的容器。。
|---ArkUIBaseNode.h //节点封装扩展类。
|---ArkUIListItemNode.h //节点封装扩展类。
|---ArkUIListNode.h //节点封装扩展类。
|---ArkUINode.h //节点封装扩展类。
|---ArkUITextNode.h //节点封装扩展类。
|---CMakeLists.txt //C语言库引用文件。
|---napi_init.cpp //与index.d.ts对应的桥接方法对接Native侧的定义处。
|---NativeEntry.cpp //桥接方法的Native侧实现。
|---NativeEntry.h //桥接方法的Native侧定义。
|---NativeModule.h
|---NormalTextListExample.h //示例代码文件。
entry/src/main/ets/
|---entryability
|---entrybackupability
|---pages
| |---index.ets //应用启动页,加载承载Native的容器。
entry/src/ohosTest/
|---ets
| |---index.test.ets // 对应页面测试代码
具体实现
一、ArkTS侧占位组件配置与Native交互触发
- 初始化占位组件依赖:创建NodeContent对象(rootSlot),作为Native组件挂载的桥梁;
- 状态控制显示逻辑:用@State @Watch('changeNativeFlag')修饰showNative变量,变量变化时触发回调;
- 绑定占位组件:通过ContentSlot(rootSlot)在UI中声明占位区域,与NodeContent绑定;
- 交互触发Native操作:changeNativeFlag回调中,根据showNative值调用Native接口(createNativeRoot/destroyNativeRoot),传递NodeContent用于挂载/卸载Native组件。
二、Native侧UI组件封装(基类+列表/文本组件)
- 基类封装通用能力:ArkUIBaseNode封装节点生命周期(析构时移除子节点、释放资源)和树操作(AddChild/RemoveChild);ArkUINode继承基类,封装通用属性设置(SetWidth/SetBackgroundColor等);
- 具体组件封装:ArkUIListNode创建ARKUI_NODE_LIST类型节点,封装滚动条状态设置(SetScrollBarState);ArkUITextNode创建ARKUI_NODE_TEXT类型节点,封装字体大小、颜色、文本内容等属性设置;
三、Native侧文本列表组件创建与挂载
- 列表组件初始化:创建ArkUIListNode实例,设置宽高占比(SetPercentWidth(1)/SetPercentHeight(1))和滚动条显示(SetScrollBarState(true));
- 列表项批量创建:循环生成30个ListItem,每个ListItem中创建TextNode,设置文本内容(std::to_string(i))、字体大小(16)、颜色(0xFFff00ff)、背景色(0xFFfffacd)等属性;
- 组件树组装:将TextNode插入ListItem,再将ListItem添加到List,形成完整列表树;
- 挂载到ArkTS:返回List组件实例,通过NativeEntry::SetRootNode将其添加到NodeContent,完成Native组件挂载。
相关权限
不涉及。
依赖
不涉及。
约束与限制
-
本示例仅支持标准系统上运行, 支持设备:华为手机。
-
HarmonyOS系统:HarmonyOS 5.0.5 Release及以上。
-
DevEco Studio版本:6.0.0 Release及以上。
-
HarmonyOS SDK版本:HarmonyOS 6.0.0 Release SDK及以上。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo ArkUISample/ButtonList > .git/info/sparse-checkout
git remote add origin https://gitcode.com/harmonyos_samples/guide-snippets.git
git pull origin master
