鸿蒙像素单位

430 阅读2分钟

介绍

  • px 屏幕物理像素单位。

  • vp 屏幕密度相关像素,根据屏幕像素密度转换为屏幕物理像素,当数值不带单位时,默认单位vp。在实际宽度为1440物理像素的屏幕上,1vp约等于3px。

  • fp 字体像素,与vp类似适用屏幕密度变化,随系统字体大小设置变化。

  • lpx 视窗逻辑像素单位,lpx单位为实际屏幕宽度与逻辑宽度(通过designWidth配置)的比值,designWidth默认值为720。当designWidth为720时,在实际宽度为1440物理像素的屏幕上,1lpx为2px大小。

像素单位转换

vp2px(value : number) : number将vp单位的数值转换为以px为单位的数值。从API version 9开始,该接口支持在ArkTS卡片中使用。
px2vp(value : number) : number将px单位的数值转换为以vp为单位的数值。从API version 9开始,该接口支持在ArkTS卡片中使用。
fp2px(value : number) : number将fp单位的数值转换为以px为单位的数值。从API version 9开始,该接口支持在ArkTS卡片中使用。
px2fp(value : number) : number将px单位的数值转换为以fp为单位的数值。从API version 9开始,该接口支持在ArkTS卡片中使用。
lpx2px(value : number) : number将lpx单位的数值转换为以px为单位的数值。从API version 9开始,该接口支持在ArkTS卡片中使用。
px2lpx(value : number) : number将px单位的数值转换为以lpx为单位的数值。从API version 9开始,该接口支持在ArkTS卡片中使用。

vp与ps

在鸿蒙OS中,vp(虚拟像素)单位的计算公式为 vp=px/(DPI/160)。这里的px代表屏幕上的实际像素,而DPI(dots per inch,每英寸点数)代表每英寸所包含的像素点数。鸿蒙OS将标准DPI设定为160,这意味着当DPI为160时,1vp等于1px。如果设备的densityPixels(屏幕密度)和标准DPI的比例不是1:1,那么可以通过上述公式将px转换为vp,以适应不同屏幕密度的设备。

例如,如果设备的densityDPI为560,那么densityPixels为 560/160 = 3.5,那么1vp = 3.5px。在鸿蒙OS开发中,通过vp单位进行布局和设计可以更好地适应不同屏幕密度的设备,确保用户界面元素在不同设备上显示一致,从而提高用户体验和应用的兼容性。