如题:可以介绍下HarmonyOS Next中NodeController的声明周期吗?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
如题:可以介绍下HarmonyOS Next中NodeController的声明周期吗?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
在HarmonyOS Next中,NodeController的声明周期主要包括以下几个关键阶段:
创建与绑定:
makeNode回调:
makeNode
回调方法。此方法用于返回一个节点,该节点将被挂载到NodeContainer上。aboutToAppear:
aboutToAppear
回调。这标志着NodeController管理的节点即将出现在UI中。交互事件处理:
onTouchEvent
回调处理)。这些事件允许NodeController对用户的交互做出响应。aboutToResize:
aboutToResize
回调。这允许NodeController根据新的布局尺寸调整节点的显示。aboutToDisappear:
aboutToDisappear
回调。这标志着NodeController管理的节点即将从UI中移除。销毁与解绑:
以下是一个使用NodeController管理节点生命周期的示例代码片段(使用TypeScript语法):
import { NodeController, BuilderNode, Size, FrameNode, UIContext } from '@ohos.arkui.node';
import { wrapBuilder, WrappedBuilder } from '@ohos.arkui.builder';
class Params {
text: string = "this is a text";
}
@Builder
function buttonBuilder(params: Params) {
Column() {
Button(params.text)
.fontSize(12)
.borderRadius(8)
.borderWidth(2)
.backgroundColor(Color.Orange)
}
}
class MyNodeController extends NodeController {
private buttonNode: BuilderNode<[Params]> | null = null;
private wrapBuilder: WrappedBuilder<[Params]> = wrapBuilder(buttonBuilder);
makeNode(uiContext: UIContext): FrameNode {
if (this.buttonNode == null) {
this.buttonNode = newBuilderNode(uiContext);
this.buttonNode.build(this.wrapBuilder, { text: "This is a Button" });
}
return this.buttonNode!.getFrameNode()!;
}
aboutToResize(size: Size) {
console.log("aboutToResize width : " + size.width + " height : " + size.height);
}
aboutToAppear() {
console.log("aboutToAppear");
}
aboutToDisappear() {
console.log("aboutToDisappear");
}
onTouchEvent(event: TouchEvent) {
console.log("onTouchEvent");
}
}
@Entry
@Component
struct Index {
private myNodeController: MyNodeController = new MyNodeController();
build() {
Column() {
NodeContainer(this.myNodeController)
.padding({ left: 35, right: 35, top: 35 })
.width("100%")
.height("100%");
}
}
}
在这个示例中,MyNodeController
类扩展了NodeController
,并实现了makeNode
、aboutToResize
、aboutToAppear
、aboutToDisappear
和onTouchEvent
回调方法。这些方法分别处理节点的创建、布局调整、显示、隐藏和触摸事件。Index
结构体则使用NodeContainer
组件来展示由MyNodeController
管理的节点。
1 回答523 阅读✓ 已解决
1 回答529 阅读
1 回答470 阅读
486 阅读
485 阅读
476 阅读
440 阅读
NodeController用于控制和反馈对应的NodeContainer上的节点的行为,需要与NodeContainer一起使用。下面,对其常用生命周期函数进行说明。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。