首页 > 其他分享 >【HarmonyOS】如何获取屏幕宽高&父容器的宽高

【HarmonyOS】如何获取屏幕宽高&父容器的宽高

时间:2023-12-29 11:37:43浏览次数:173  
标签:console width 获取 宽高 height HarmonyOS 组件 屏幕

【关键字】

HarmonyOS、屏幕宽高、父容器宽高、组件通用信息、组件标识


1、写在前面

在鸿蒙应用开发的过程中,需要用到屏幕的宽高,那么我们该如何获取手机屏幕的宽度和高度呢?另外,某个组件的父容器的宽高我们能不能获取到呢?带着这些问题,通过查找相关资料,结合实际的代码进行测试,顺利的获取到了屏幕宽高和父组件的宽高,下面一起来看一下具体该如何实现吧。


2、解决方案

首先是获取屏幕宽高,它的实现较为简单,直接上代码:

aboutToAppear(){
    // let displayClass = null;
    try {
      // displayClass = display.getDefaultDisplaySync()
      console.info('------>width:'+display.getDefaultDisplaySync().width)
      // console.info('------>width:'+displayClass.width)
      // console.info('------>height:'+displayClass.height)
      console.info('------>height:'+display.getDefaultDisplaySync().height)
    } catch (exception) {
      console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception))
    }
  }

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_宽高

运行代码,发现日志中确实打印出了屏幕宽高的结果:

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_Text_02

那父容器的宽高又该如何获取呢?直接获取好像并没有相关的属性或者方法可以获取到,通过查找API文档,发现可以通过间接的手段来获取父组件的宽高,来具体看一下代码是如何写的:

build() {
    Column() {
      Column() {
        Text('我是文本').width(200).height(50).onAppear(()=>{
          let jsonStr = getInspectorByKey('111')
          let data = JSON.parse(jsonStr)
          let attr = data.$attrs
          let size = attr.size
          console.info('------>parent:'+size.width+'---'+size.height)
        })
      }.id('111').width(300).height(300)
    }.width('100%').height('100%')
  }

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_Text_03

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_屏幕宽高_04

这里首先是给Text这个文本组件的父容器Column组件设置一个id,然后在Text组件加载的回调里面,通过getInspectorByKey(id)这个方法,然后入参传入某个组件的id,这样就可以获取到对应组件的所有属性,然后将返回的JSON格式的字符串转成对象,再通过解析size属性就可以获取到对应组件的宽高啦:

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_Text_05

OK,通过上面的方法,我们就可以获取父组件的宽高。

完整代码如下:

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_宽高_06

【HarmonyOS】如何获取屏幕宽高&父容器的宽高_屏幕宽高_07


3、参考文档

屏幕宽高:

https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-display-0000001427585076-V3

父组件宽高:

https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-universal-attributes-component-id-0000001427902440-V3#ZH-CN_TOPIC_0000001574088801__getinspectorbykey9

标签:console,width,获取,宽高,height,HarmonyOS,组件,屏幕
From: https://blog.51cto.com/u_15687416/9024841

相关文章

  • 【HarmonyOS】ArkTS如何打开高德地图导航功能
     【关键字】鸿蒙应用开发、ArkTS、拉起高德地图、打开导航1、写在前面在应用开发的过程中,可能会遇到过这样的需求,拉起第三方导航应用,比如点击某个按钮直接跳转到高德地图导航的页面,那这个需求在鸿蒙中该如何实现呢?2、解决方案对于这个需求,其实实现起来也很简单,通过deeplink的方式,......
  • #星计划#HarmonyOS开发实例—蜜蜂AI助手【坚果派-坚果的小跟班】
    1.前言自华为宣布HarmonyOSNEXT全面启动,近期新浪、B站、小红书、支付宝等各领域头部企业纷纷启动鸿蒙原生应用开发。据媒体统计,如今Top20的应用里,已经有近一半开始了鸿蒙原生应用开发。虽然目前HarmonyOSNEXT还未面向个人开发者开放,但我们可以体验并使用最新的API9和开发工具,尝......
  • 鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化
    鸿蒙(HarmonyOS3.1)DevEcoStudio3.1开发环境汉化一、安装环境操作系统: Windows10专业版IDE:DevEcoStudio3.1SDK:HarmonyOS3.1二、设置过程打开IDE,在第一个菜单File编辑中找到Settings...菜单编辑在Setting...中找到Plugins菜单编辑在Type/toseeoptions输入框中输入Chi......
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Row组件沿水平方向布局容器。子组件可以包含子组件。接口Row(value?:{space?:string|number})参数参数名参数类型必填默认值参数......
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件
    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Column组件沿垂直方向布局的容器。子组件可以包含子组件。接口Column(value?:{space?:string|number})参数参数名参数类型必......
  • HarmonyOS实践之应用状态变量共享
     平时在开发的过程中,我们会在应用中共享数据,在不同的页面间共享信息。虽然常用的共享信息,也可以通过不同页面中组件间信息共享的方式,但有时使用应用级别的状态管理会让开发工作变得简单。根据不同的使用场景,ArkTS提供了以下几种应用状态管理的能力:○ LocalStorage:使用范围......
  • HarmonyOS应用兼容稳定性云测试
    HarmonyOS应用兼容稳定性云测试兼容性测试兼容性测试主要验证HarmonyOS应用在华为真机设备上运行的兼容性问题,包括首次安装、再次安装、启动、卸载、崩溃、黑白屏、闪退、运行错误、无法回退、无响应、设计约束场景。具体兼容性测试项的详细说明请参考兼容性测试标准。兼容性测试支......
  • HarmonyOS应用性能与功耗云测试
     性能测试性能测试主要验证HarmonyOS应用在华为真机设备上运行的性能问题,包括启动时长、界面显示、CPU占用和内存占用。具体性能测试项的详细说明请参考性能测试标准。性能测试支持Phone和TV设备,包格式包括Hap/App。前提条件● 已注册华为开发者帐号,并完成实名认证,具体......
  • windows自带便签如何常驻桌面?电脑便签怎么固定在屏幕上?
    上班族们每天面临着大量的工作任务,时常需要在繁杂的工作中快速记录琐事、任务清单等重要信息。这时候,一款能够常驻桌面的电脑便签软件能够为工作带来很大的帮助,可以有效简化工作流程,提高办公效率。那么,Windows自带便签如何常驻桌面?电脑便签又该如何固定在屏幕上呢?其实Windows电脑......
  • 扫描全能王启动鸿蒙原生应用开发,系HarmonyOS NEXT智能扫描领域首批
    近期,“鸿蒙合作签约暨扫描全能王鸿蒙原生应用开发启动仪式”(简称“签约仪式”)正式举行。合合信息与华为达成鸿蒙合作,旗下扫描全能王将基于HarmonyOSNEXT正式启动鸿蒙原生应用开发。据悉,扫描全能王是鸿蒙在智能扫描领域内签约原生应用开发的头部产品,双方拟在以OpenHarmony为底座......