HarmonyOS preview模拟器运行时,display.getDefaultDisplaySync()获取的宽高为0

preview模拟器运行时,display.getDefaultDisplaySync()获取的宽高为0

模拟器运行时,使用display.getDefaultDisplaySync()获取屏幕宽度,设置高度为一样时,获取到的宽度是0,高度也是0,这样在需要设置比例高度,或者计算剩余高度时,在模拟器上面显示有问题。

HarmonyOS
2024-09-04 08:55:06
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

Previewer仅用于看UI展示以及UI交互。Previewer的优势是轻量级、速度快。如果涉及网络请求等就需要Simulator,Simulator比Previewer的优势是支持的更全面。如果需要一些特殊交互的功能实现就要使用真机了,如:拍照、录制视频、录音、摇一摇等功能。

Previewer 是无法调用display.getDefaultDisplaySync()接口的,所以获取不到宽高,建议使用Simulator或者真机。

用simulator 是能正常获取宽高的:

import display from '@ohos.display'; 
 
@Entry 
@Component 
struct Index { 
  @State iWidth:number = 0 
  @State iHeight:number = 0 
 
  @State message: string = 'Hello World'; 
 
  aboutToAppear(): void { 
    let displayClass: display.Display | null = null; 
    try { 
      displayClass = display.getDefaultDisplaySync(); 
      this.iWidth = px2vp(displayClass.width) 
      this.iHeight = px2vp(displayClass.height ) 
      // this.iWidth = 300 
      // this.iHeight = 600 
      console.log('display:',displayClass.width,displayClass.height) 
    } catch (exception) { 
      console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception)); 
    } 
  } 
 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
      } 
      .backgroundColor(Color.Blue) 
      .width(this.iWidth) 
      .height(this.iHeight) 
    } 
    .width(this.iWidth) 
    .height(this.iHeight) 
  } 
}

输出日志:display: 1260 2720

屏幕上也能看得见蓝色背景和hello world。

分享
微博
QQ
微信
回复
2024-09-04 18:05:54
相关问题
获取运行时编译构建参数
907浏览 • 1回复 待解决
获取app进程运行时间api疑似不准
299浏览 • 1回复 待解决
HAP和HAR运行时内存模型
165浏览 • 1回复 待解决
运行时AOP插桩demo测试
888浏览 • 1回复 待解决
应用运行时进程资源使用规格
1767浏览 • 1回复 待解决
测试脚本运行时安装app报错
175浏览 • 1回复 待解决
获取Column最终
324浏览 • 1回复 待解决
ArkTs 有运行时创建指定类方法吗?
134浏览 • 1回复 待解决
如何动态查看代码运行时变量值?
590浏览 • 1回复 待解决
HarmonyOS photoAsset获取图片失败
256浏览 • 1回复 待解决
HarmonyOS获取相册视频问题
315浏览 • 1回复 待解决
如何获取窗口信息
2290浏览 • 1回复 待解决
ArkTs如何获取组件
4521浏览 • 1回复 待解决
IDE5创建工程无法在模拟器运行
64浏览 • 1回复 待解决