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模拟器上无法正确转换
781浏览 • 1回复 待解决
c++ 有vp2px 的接口么?
2126浏览 • 1回复 待解决
HarmonyOS 组件对应的单位(pxvp
287浏览 • 1回复 待解决
pxvp之间如何相互转换
3405浏览 • 1回复 待解决
HarmonyOS pxvp的转换
241浏览 • 1回复 待解决
HarmonyOS pxvp如何转换
281浏览 • 1回复 待解决
HarmonyOS 此方法的值如何转成vp
164浏览 • 1回复 待解决
HarmonyOS pxvp 单位转换问题
65浏览 • 1回复 待解决
harmonyos开发中vppx如何互换?
682浏览 • 2回复 待解决
vp、fp、px的区别,有谁知道?
2633浏览 • 1回复 待解决
HarmonyOS flutterohos如何添加系统
275浏览 • 1回复 待解决
接口内定义匿名的语法
1915浏览 • 1回复 待解决
HarmonyOS 事件
282浏览 • 1回复 待解决
C++时,如何阻塞TS主线程?
741浏览 • 1回复 待解决