【HarmonyOS NEXT】鸿蒙如何动态添加组件(NodeController)

NodeController用于实现自定义节点的创建、显示、更新等操作的管理,并负责将自定义节点挂载到NodeContainer上。

说明

本模块首批接口从API version 11开始支持

当前不支持在预览器中使用NodeController。

导入模块

import { NodeController } from "@ohos.arkui.node";

NodeController

通常搭配NodeContainer进行使用。用于创建控制器管理绑定的NodeContainer组件。一个NodeController只允许与一个NodeContainer进行绑定。

系统能力: SystemCapability.ArkUI.ArkUI.Full

makeNode

abstract makeNode(uiContext : UIContext): FrameNode | null

当实例绑定的NodeContainer创建的时候进行回调。回调方法将返回一个节点,将该节点挂载至NodeContainer。

或者可以通过NodeController的rebuild()方法进行回调的触发。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

uiContext

UIContext

回调该方法时候,绑定NodeContainer的UI上下文。

返回值:

类型

说明

FrameNode| null

一个FrameNode对象,返回的节点将被挂载至NodeContainer的占位节点上。若返回null对象,将清空对应NodeContainer的子节点。

aboutToAppear

aboutToAppear?(): void

当NodeController绑定的NodeContainer挂载显示时触发此回调。

系统能力: SystemCapability.ArkUI.ArkUI.Full

aboutToDisappear

aboutToDisappear?(): void

当NodeController绑定的NodeContainer卸载消失时触发此回调。

系统能力: SystemCapability.ArkUI.ArkUI.Full

aboutToResize

aboutToResize?(size: Size): void

当NodeController绑定的NodeContainer布局的时候触发此回调。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

size

Size

用于返回组件布局大小的宽和高,单位为vp。

onTouchEvent

onTouchEvent?(event: TouchEvent): void

当NodeController绑定的NodeContainer收到Touch事件时触发此回调。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

event

TouchEvent

触摸事件。

rebuild

rebuild(): void

调用此接口通知NodeContainer组件重新回调makeNode方法,更改子节点。

系统能力: SystemCapability.ArkUI.ArkUI.Full

示例

import { UIContext } from '@ohos.arkui.UIContext';
import { NodeController, BuilderNode, Size, FrameNode } from '@ohos.arkui.node';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 = new BuilderNode(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%")}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时域自相关计算中,使用卷积而不是点积操作的原因

自相关&#xff08;Auto-Correlation&#xff09;和卷积&#xff08;Convolution&#xff09;是信号处理中的两个重要操作&#xff0c;它们在时域中的应用有所不同。尽管在概念上有所关联&#xff0c;但它们用于不同的目的&#xff0c;尤其是在处理时间序列数据时。以下是自相关…

尚硅谷k8s 2

p54-56 k8s核心实战 service服务发现 Service:将一组 Pods 公开为网络服务的抽象方法。 #暴露Deploy,暴露deploy会出现在svc kubectl expose deployment my-dep --port8000 --target-port80#使用标签检索Pod kubectl get pod -l appmy-depapiVersion: v1 kind: Service metad…

无锁编程——从CPU缓存一致性讲到内存模型(1)

一.前言 1.什么是有锁编程&#xff0c;什么是无锁编程&#xff1f; 在编程中&#xff0c;特别是在并发编程的上下文中&#xff0c;“无锁”和“有锁”是描述线程同步和资源访问控制的两种不同策略。有锁&#xff08;Locked&#xff09;: 有锁编程是指使用锁&#xff08;例如互…

Go语言定时器Timer和Ticker到底怎么用

原文链接&#xff0c;可获取更多Go语言学习资料 概述 在日常开发中&#xff0c;我们不可避免的需要使用到定时任务用来处理业务逻辑。在Go语言中内置的有两个定时器&#xff0c;Timer和Ticker&#xff0c;合理的使用这两个定时器可以很好的解决定时任务的需求&#xff0c;同时…

《数据仓库与数据挖掘》自测

试卷一 一、选择题&#xff08;每题2分&#xff0c;共20分&#xff09; 1. 数据仓库的主要特征不包括以下哪一项&#xff1f; A. 数据量大 B. 异构数据整合 C. 事务处理 D. 支持决策分析 2. OLAP的核心功能是&#xff1a; A. 事务处理 B. 多维数据分析 C. 数据清洗 D. 数据转…

Python系统教程01

Python 是一门解释性语言&#xff0c;相对更简单、易学&#xff0c;它可以用于解决数学问题、获取与分 析数据、爬虫爬取网络数据、实现复制数学算法等等。 1、print()函数&#xff1a; print()书写时注意所有的符号都是英文符号。print()输出内容时&#xff0c;若要输出字符…

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…

回溯 | Java | LeetCode 39, 40, 131 做题总结(未完)

Java Arrays.sort(数组) //排序 不讲究顺序的解答&#xff0c;都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意&#xff0c;sum - candidates[i];很重要&#xff0c;也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

力扣热100 哈希

哈希 1. 两数之和49.字母异位词分组128.最长连续序列 1. 两数之和 题目&#xff1a;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。…

算法刷题笔记 模拟栈(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 实现一个栈&#xff0c;栈初始为空&#xff0c;支持四种操作&#xff1a; push x – 向栈顶插入一个数x&#xff1b;pop – 从栈顶弹出一个数&#xff1b;empty – 判断栈是否为空&#xff1b;query – 查询栈顶元素。 现在要对栈…

34. 在排序数组中查找元素的第一个和最后一个位置(中等)

34. 在排序数组中查找元素的第一个和最后一个位置 1. 题目描述2.详细题解&#xff08;1&#xff09;朴素二分查找算法&#xff08;2&#xff09;改进二分查找算法 3.代码实现3.1 Python  方法一:  方法二:  方法三&#xff1a;优化方法二 3.2 Java 1. 题目描述 题目中转…

Elasticsearch:Painless scripting 语言(二)

这是继上一篇文章 “Elasticsearch&#xff1a;Painless scripting 语言&#xff08;一&#xff09;” 的续篇。 使用 field API 访问文档中的字段 警告&#xff1a;Field API 仍在开发中&#xff0c;应视为测试版功能。API 可能会发生变化&#xff0c;此迭代可能不是最终状态。…

53、Flink 测试工具测试用户自定义函数详解

1.测试用户自定义函数 a&#xff09;单元测试无状态、无时间限制的 UDF 示例&#xff1a;无状态的 MapFunction 。 public class IncrementMapFunction implements MapFunction<Long, Long> {Overridepublic Long map(Long record) throws Exception {return record …

Ubuntu20.04 安装 cudatookit 12.2 + cudnn 安装

最简约的部署Ubuntu20.04深度学习环境的教程 1. 安装Ubuntu20.04 系统 B站详细的安装教程 简约安装版 2. 安装Nvidia显卡驱动 我参考了各种资料&#xff0c;重装系统&#xff0c;完美解决开机显示器黑屏无法进入桌面的情况 黑屏问题主要是由linux内核更新导致&#xff0c;…

煤矿ar远程协作平台系统提升了操作的安全性和效率

工业AR远程专家协助系统为企业量身打造大型设施的虚拟布局方案。借助先进的AR增强现实技术&#xff0c;企业能够在虚拟环境中精准模拟并购买适配设备&#xff0c;确保设施的顺畅运行。同时&#xff0c;工业AR远程专家协助系统能提供的协作功能让团队成员能够实时共享虚拟布局&a…

昇思25天学习打卡营第8天|MindSpore-SSD目标检测

SSD目标检测介绍 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(mean Average Precision)以及59FPS;对于512x512的网络,达到了76.9%mAP ,超…

Mouse Albumin ELISA Kit小鼠白蛋白ELISA试剂盒

白蛋白存在于所有哺乳动物和许多低等脊椎动物的血管内和血管外&#xff0c;是一种由肝脏合成的约67kDa的蛋白质。正常情况下&#xff0c;只有非常微量的白蛋白能逃过肾小球的重吸收&#xff0c;并被排泄到尿液中。ICL的Mouse Albumin ELISA Kit是一种高灵敏度的双抗体夹心法ELI…

基于“香港世界”的SLAM技术介绍

在视觉感知技术中&#xff0c;理解和描述复杂的三维室外场景至关重要&#xff0c;尤其是自动驾驶技术的发展要求对陌生环境具有更强的适应能力和鲁棒性。传统上&#xff0c;使用“曼哈顿世界”和“亚特兰大世界”模型来描述具有垂直和水平结构的城市场景。 当遇到像香港这样地形…

C++:类与面向对象static和this关键字其他关键字

类与面向对象 struct和class (1)struct是C中用户自定义类型&#xff0c;主要功能是对功能相关数据的封装 (2)struct不能直接封装函数&#xff0c;但可以通过封装函数指针来间接封装函数 (3)struct就是class的初级阶段&#xff0c;class在struct基础上做了很多扩展&#xff0c;便…

cartographer代码学习-扫描匹配(暴力搜索)

在学习栅格地图的时候&#xff0c;我们知道在栅格更新前会先进行扫描匹配获取当前机器人最有可能所在的位姿&#xff1a; // local map frame <- gravity-aligned frame// 扫描匹配, 进行点云与submap的匹配std::unique_ptr<transform::Rigid2d> pose_estimate_2d Sca…