【鸿蒙next开发】ArkUI框架:UI界面-@ohos.arkui.componentUtils (componentUtils)

 往期鸿蒙5.0全套实战文章必看:(文中附带鸿蒙5.0全栈学习资料)


@ohos.arkui.componentUtils (componentUtils)

提供获取组件绘制区域坐标和大小的能力。

说明

从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见UIContext说明。

从API version 10开始,可以通过使用UIContext中的getComponentUtils方法获取当前UI上下文关联的ComponentUtils对象。该接口需要在目标组件布局、完成以后获取目标组件区域大小信息,建议在@ohos.arkui.inspector(布局回调)接收到布局完成的通知以后使用该接口。

导入模块

import { componentUtils } from '@kit.ArkUI';

componentUtils.getRectangleById

getRectangleById(id: string): ComponentInfo

根据组件ID获取组件实例对象, 通过组件实例对象将获取的坐标位置和大小同步返回给开发者。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

参数:

参数名类型必填说明
idstring指定组件id。

返回值:

类型说明
ComponentInfo组件大小、位置、平移缩放旋转及仿射矩阵属性信息。

错误码:

以下错误码的详细介绍。

错误码ID错误信息
100001UI execution context not found.

示例:

import { componentUtils } from '@kit.ArkUI';
let modePosition:componentUtils.ComponentInfo = componentUtils.getRectangleById("onClick");

ComponentInfo

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

名称类型必填说明
sizeSize组件大小。
localOffsetOffset组件相对于父组件信息。
windowOffsetOffset组件相对于窗口信息。
screenOffsetOffset组件相对于屏幕信息。
translateTranslateResult组件平移信息。
scaleScaleResult组件缩放信息。
rotateRotateResult组件旋转信息。
transformMatrix4Result仿射矩阵信息,根据入参创建的四阶矩阵对象。

Size

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

名称类型必填说明
widthnumber

组件宽度。

单位: px

heightnumber

组件高度。

单位: px

Offset

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

名称类型必填说明
xnumber

x点坐标。

单位: px

ynumber

y点坐标。

单位: px

TranslateResult

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

名称类型必填说明
xnumber

x轴平移距离。

单位: px

ynumber

y轴平移距离。

单位: px

znumber

z轴平移距离。

单位: px

ScaleResult

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

名称类型必填说明
xnumber

x轴缩放倍数。

单位: px

ynumber

y轴缩放倍数。

单位: px

znumber

z轴缩放倍数。

单位: px

centerXnumber

变换中心点x轴坐标。

单位: px

centerYnumber

变换中心点y轴坐标。

单位: px

RotateResult

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

名称类型必填说明
xnumber

旋转轴向量x坐标。

单位: px

ynumber

旋转轴向量y坐标。

单位: px

znumber

旋转轴向量z坐标。

单位: px

anglenumber

旋转角度。

单位: px

centerXnumber

变换中心点x轴坐标。

单位: px

centerYnumber

变换中心点y轴坐标。

单位: px

Matrix4Result

type Matrix4Result = [number,number,number,number,number,number,number,number,number,number,number,number,number,number,number,number]

元服务API: 从API version 11开始,该接口支持在元服务中使用。

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

类型说明

[number,number,number,number,

number,number,number,number,

number,number,number,number,

number,number,number,number]

取值范围为长度为16(4*4)的number数组, 详情见四阶矩阵说明,单位: px

四阶矩阵说明:

参数名类型必填说明
m00numberx轴缩放值,单位矩阵默认为1。
m01number第2个值,xyz轴旋转会影响这个值。
m02number第3个值,xyz轴旋转会影响这个值。
m03number无实际意义。
m10number第5个值,xyz轴旋转会影响这个值。
m11numbery轴缩放值,单位矩阵默认为1。
m12number第7个值,xyz轴旋转会影响这个值。
m13number无实际意义。
m20number第9个值,xyz轴旋转会影响这个值。
m21number第10个值,xyz轴旋转会影响这个值。
m22numberz轴缩放值,单位矩阵默认为1。
m23number无实际意义。
m30numberx轴平移值,单位px,单位矩阵默认为0。
m31numbery轴平移值,单位px,单位矩阵默认为0。
m32numberz轴平移值,单位px,单位矩阵默认为0。
m33number齐次坐标下生效,产生透视投影效果。

示例:

说明

推荐通过使用UIContext中的getComponentUtils方法获取当前UI上下文关联的ComponentUtils对象。

import { matrix4, componentUtils } from '@kit.ArkUI';

@Entry
@Component
struct Utils {
@State x: number = 120;
@State y: number = 10;
@State z: number = 100;
@State value: string = '';
private matrix1 = matrix4.identity().translate({ x: this.x, y: this.y, z: this.z });

build() {
  Column() {
    Image($r("app.media.img"))
      .transform(this.matrix1)
      .translate({ x: 20, y: 20, z: 20 })
      .scale({ x: 0.5, y: 0.5, z: 1 })
      .rotate({
        x: 1,
        y: 1,
        z: 1,
        centerX: '50%',
        centerY: '50%',
        angle: 300
      })
      .width(300)
      .height(100)
      .key("image_01")
    Button('getRectangleById')
    .onClick(() => {
      this.value = JSON.stringify(componentUtils.getRectangleById("image_01")) // 建议使用this.getUIContext().getComponentUtils()接口
    }).margin(10).id('onClick')
    Text(this.value)
      .margin(20)
      .width(300)
      .height(300)
      .borderWidth(2)
  }.margin({left: 50})
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值