当前位置:   article > 正文

HarmonyOS实战开发:@ohos.arkui.componentUtils (componentUtils)

HarmonyOS实战开发:@ohos.arkui.componentUtils (componentUtils)

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

说明:

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

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

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

导入模块

import componentUtils from '@ohos.arkui.componentUtils'

componentUtils.getRectangleById

getRectangleById(id: string): ComponentInfo

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

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

参数:

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

返回值:

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

示例:

  1. import componentUtils from '@ohos.arkui.componentUtils';
  2. let modePosition:componentUtils.ComponentInfo = componentUtils.getRectangleById("onClick");

ComponentInfo

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

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

Size

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

名称类型必填说明
widthnumber组件宽度。
heightnumber组件高度。

Offset

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

名称类型必填说明
xnumberx点坐标。
ynumbery点坐标。

TranslateResult

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

名称类型必填说明
xnumberx轴平移距离。
ynumbery轴平移距离。
znumberz轴平移距离。

ScaleResult

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

名称类型必填说明
xnumberx轴缩放倍数。
ynumbery轴缩放倍数。
znumberz轴缩放倍数。
centerXnumber变换中心点x轴坐标。
centerYnumber变换中心点y轴坐标。。

RotateResult

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

名称类型必填说明
xnumber旋转轴向量x坐标。
ynumber旋转轴向量y坐标。
znumber旋转轴向量z坐标。
anglenumber旋转角度。
centerXnumber变换中心点x轴坐标。
centerYnumber变换中心点y轴坐标。

Matrix4Result

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

取值范围说明
[number,number,number,number,
number,number,number,number,
number,number,number,number,
number,number,number,number]
取值范围为长度为16(4*4)的number数组, 详情见四阶矩阵说明。

四阶矩阵说明:

参数名类型必填说明
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齐次坐标下生效,产生透视投影效果。

示例:

  1. import matrix4 from '@ohos.matrix4';
  2. import componentUtils from '@ohos.arkui.componentUtils';
  3. @Entry
  4. @Component
  5. struct Utils{
  6. private getComponentRect(key:string) {
  7. console.info("Mode Key: " + key);
  8. let modePosition = componentUtils.getRectangleById(key);
  9. let localOffsetWidth = modePosition.size.width;
  10. let localOffsetHeight = modePosition.size.height;
  11. let localOffsetX = modePosition.localOffset.x;
  12. let localOffsetY = modePosition.localOffset.y;
  13. let windowOffsetX = modePosition.windowOffset.x;
  14. let windowOffsetY = modePosition.windowOffset.y;
  15. let screenOffsetX = modePosition.screenOffset.x;
  16. let screenOffsetY = modePosition.screenOffset.y;
  17. let translateX = modePosition.translate.x;
  18. let translateY = modePosition.translate.y;
  19. let translateZ = modePosition.translate.z;
  20. let scaleX = modePosition.scale.x;
  21. let scaleY = modePosition.scale.y;
  22. let scaleZ = modePosition.scale.z;
  23. let scaleCenterX = modePosition.scale.centerX;
  24. let scaleCenterY = modePosition.scale.centerY;
  25. let rotateX = modePosition.rotate.x;
  26. let rotateY = modePosition.rotate.y;
  27. let rotateZ = modePosition.rotate.z;
  28. let rotateCenterX = modePosition.rotate.centerX;
  29. let rotateCenterY = modePosition.rotate.centerY;
  30. let rotateAngle = modePosition.rotate.angle;
  31. let Matrix4_1 = modePosition.transform[0];
  32. let Matrix4_2 = modePosition.transform[1];
  33. let Matrix4_3 = modePosition.transform[2];
  34. let Matrix4_4 = modePosition.transform[3];
  35. let Matrix4_5 = modePosition.transform[4];
  36. let Matrix4_6 = modePosition.transform[5];
  37. let Matrix4_7 = modePosition.transform[6];
  38. let Matrix4_8 = modePosition.transform[7];
  39. let Matrix4_9 = modePosition.transform[8];
  40. let Matrix4_10 = modePosition.transform[9];
  41. let Matrix4_11 = modePosition.transform[10];
  42. let Matrix4_12 = modePosition.transform[11];
  43. let Matrix4_13 = modePosition.transform[12];
  44. let Matrix4_14 = modePosition.transform[13];
  45. let Matrix4_15 = modePosition.transform[14];
  46. let Matrix4_16 = modePosition.transform[15];
  47. console.info("[getRectangleById] current component obj is: " + modePosition );
  48. }
  49. @State x: number = 120;
  50. @State y: number = 10;
  51. @State z: number = 100;
  52. private matrix1 = matrix4.identity().translate({ x: this.x, y: this.y, z: this.z });
  53. build() {
  54. Column() {
  55. Image($r("app.media.icon"))
  56. .transform(this.matrix1)
  57. .translate({ x: 100, y: 10, z: 50})
  58. .scale({ x: 2, y: 0.5, z: 1 })
  59. .rotate({
  60. x: 1,
  61. y: 1,
  62. z: 1,
  63. centerX: '50%',
  64. centerY: '50%',
  65. angle: 300
  66. })
  67. .width("40%")
  68. .height(100)
  69. .key("image_01")
  70. Button() {
  71. Text('getRectangleById').fontSize(40).fontWeight(FontWeight.Bold);
  72. }.margin({ top: 20 })
  73. .onClick(() => {
  74. this.getComponentRect("image_01");
  75. }).id('onClick');
  76. }
  77. }
  78. }

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/730677
推荐阅读
相关标签
  

闽ICP备14008679号