代码拉取完成,页面将自动刷新
本示例是使用ArkUI的FrameNode扩展实现动态布局类框架 的示例代码,主要讲解如何使用ArkUI的FrameNode扩展实现动态布局类框架。
使用说明
{
"type": "Column",
"css": {
"width": "100%"
},
"children": [
{
"type": "Row",
"css": {
"width": "100%",
"padding": {
"left": 15,
"right": 15
},
"margin": {
"top": 5,
"bottom": 5
},
...
},
...
},
...
]
}
class VM {
type?: string
content?: string
css?: ESObject
children?: VM[]
id?: string
}
let carouselNodes: typeNode.Image[] = [];
function FrameNodeFactory(vm: VM, context: UIContext): FrameNode | null {
...
return null;
}
function setColumnNodeAttr(node: typeNode.Column, css: ESObject) {
...
}
function setRowNodeAttr(node: typeNode.Row, css: ESObject) {
...
}
class ImperativeController extends NodeController {
makeNode(uiContext: UIContext): FrameNode | null {
return FrameNodeFactory(data, uiContext);
}
}
@Entry
@Component
struct ImperativeView {
controller: ImperativeController = new ImperativeController();
build() {
Column() {
NodeContainer(this.controller)
}
.height('100%')
.width('100%')
.backgroundColor(Color.Black)
}
}
使用ArkUI的FrameNode扩展,可以避免创建自定义组件对象和状态变量对象,也无需进行依赖收集,从而显著提升组件创建的速度,并且能更快的组件更新操作以及对组件树结构的直接控制。
imperativedynamiclayouts // har类型
|---jsonpage // 存放描述UI的数据文件
|---|---foo.json // 描述UI的数据
|---view // 视图
|---|---ImperativeView.ets // 视频首页
不涉及
不涉及
本示例仅支持标准系统上运行。
本示例已适配API version 12版本SDK。
本示例需要使用DevEco Studio 5.0.0 Release及以上版本才可编译运行。
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo /code/UI/ImperativeDynamicLayouts/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。