px2vp 在context.getLastWindow回调之前无效

系统提供的方法 px2vp , 在context.getLastWindow回调之前无效 。在context.getLastWindow回调之前调用,输入和输出一样 ,在context.getLastWindow回调之后调用 , 可以获取到正常值 。有没有什么方法可以在getLastWindow之前就能计算px2vp。

HarmonyOS
2024-10-09 10:38:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

px2vp不可用时,可以引入屏幕属性模块,获取当前系统屏幕密度,手动换算px和vp的值,计算公式为,vp= px/(DPI/160),参考如下代码,densityPixels是屏幕密度,是densityDPI和标准DPI的比例,常见取值有0.75,1.0,1.5,2.0,3.0等,在HarmonyOS中,标准DPI为160。

import { display } from '@kit.ArkUI';  
@Entry  
@Component  
struct Example {  
  aboutToAppear() {  
    let displayClass: display.Display | null = null;  
    try {  
      displayClass = display.getDefaultDisplaySync();  
      let test1 = px2vp(20)  
      let test2 = 20/displayClass.densityPixels //实际效果等同于px2vp(20)  
      console.info('test1='+test1+' test2='+test2)  
    } catch (exception) {  
      console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));  
    }  
  }  
  build() {  
    Column() {  
    }.width('100%')  
  }  
}
分享
微博
QQ
微信
回复
2024-10-09 17:58:37
相关问题
HarmonyOS px2vp模拟器上无法正确转换
390浏览 • 1回复 待解决
c++ 有vp2px 的接口么?
1724浏览 • 1回复 待解决
pxvp之间如何相互转换
2352浏览 • 1回复 待解决
vp、fp、px的区别,有谁知道?
2116浏览 • 1回复 待解决
接口内定义匿名的语法
1592浏览 • 1回复 待解决
interface如何调用
818浏览 • 1回复 待解决
C++时,如何阻塞TS主线程?
355浏览 • 1回复 待解决
HarmonyOS Web组件
100浏览 • 1回复 待解决
HarmonyOS 如何声明全局函数
227浏览 • 1回复 待解决
支付成功后没有收到
1686浏览 • 1回复 待解决
HarmonyOS 活体检测问题
41浏览 • 1回复 待解决
请教2vp相关的问题,麻烦解答一下
154浏览 • 1回复 待解决
webview静态资源下载完成的
1545浏览 • 1回复 待解决