文档管理中心
您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明
指南与API参考API参考应用框架ArkUI(方舟UI框架)ArkTS组件公共定义像素单位

像素单位

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

ArkUI为开发者提供4种像素单位,采用vp为基准数据单位。

说明
  • 本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。

  • 直接使用vp2px/px2vp/fp2px/px2fp/lpx2px/px2lpx可能存在UI上下文不明确的问题,以下接口从API version 18开始废弃,建议使用getUIContext()获取UIContext实例,再使用UIContext下的vp2px/px2vp/fp2px/px2fp/lpx2px/px2lpx调用绑定实例的接口。

  • 在UI实例未创建时,vp2px/px2vp使用默认屏幕的虚拟像素比进行转换。在该场景下,使用UIContext接口替换时,开发者可参考像素单位转换接口替换为UIContext接口

基本像素单位

展开
名称 描述
px 屏幕物理像素单位。
vp

屏幕密度相关像素,根据屏幕像素密度转换为屏幕物理像素,当数值不带单位时,默认单位vp。

说明:

vp与px的比例与屏幕像素密度有关。

fp 字体像素,与vp类似适用屏幕密度变化,随系统字体大小设置变化。
lpx 视窗逻辑像素单位,lpx单位为实际屏幕宽度与逻辑宽度(通过designWidth配置)的比值,designWidth默认值为720。当designWidth为720时,在实际宽度为1440物理像素的屏幕上,1lpx为2px大小。

vp2px(deprecated)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

vp2px(value: number): number

将vp单位的数值转换为以px为单位的数值。

说明

默认使用当前UI实例所在屏幕的虚拟像素比进行转换,UI实例不明确时,使用默认屏幕的虚拟像素比进行转换,可能导致转换后结果与预期不一致的情况。

从API version 7开始支持,从API version 18开始废弃,建议使用vp2px替代。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number

将vp单位的数值转换为以px为单位的数值。

取值范围:(-∞, +∞)

返回值:

展开
类型 说明
number

转换后的数值。

取值范围:(-∞, +∞)

px2vp(deprecated)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

px2vp(value: number): number

将px单位的数值转换为以vp为单位的数值。

说明

默认使用当前UI实例所在屏幕的虚拟像素比进行转换,UI实例不明确时,使用默认屏幕的虚拟像素比进行转换,可能导致转换后结果与预期不一致的情况。

从API version 7开始支持,从API version 18开始废弃,建议使用px2vp替代。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number

将px单位的数值转换为以vp为单位的数值。

取值范围:(-∞, +∞)

返回值:

展开
类型 说明
number

转换后的数值。

取值范围:(-∞, +∞)

fp2px(deprecated)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

fp2px(value: number): number

将fp单位的数值转换为以px为单位的数值。

说明

从API version 7开始支持,从API version 18开始废弃,建议使用fp2px替代。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number

将fp单位的数值转换为以px为单位的数值。

取值范围:(-∞, +∞)

返回值:

展开
类型 说明
number

转换后的数值。

取值范围:(-∞, +∞)

px2fp(deprecated)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

px2fp(value: number): number

将px单位的数值转换为以fp为单位的数值。

说明

从API version 7开始支持,从API version 18开始废弃,建议使用px2fp替代。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number

将px单位的数值转换为以fp为单位的数值。

取值范围:(-∞, +∞)

返回值:

展开
类型 说明
number

转换后的数值。

取值范围:(-∞, +∞)

lpx2px(deprecated)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

lpx2px(value: number): number

将lpx单位的数值转换为以px为单位的数值。

说明

从API version 7开始支持,从API version 18开始废弃,建议使用lpx2px替代。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number

将lpx单位的数值转换为以px为单位的数值。

取值范围:(-∞, +∞)

返回值:

展开
类型 说明
number

转换后的数值。

取值范围:(-∞, +∞)

px2lpx(deprecated)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

px2lpx(value: number): number

将px单位的数值转换为以lpx为单位的数值。

说明

从API version 7开始支持,从API version 18开始废弃,建议使用px2lpx替代。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number

将px单位的数值转换为以lpx为单位的数值。

取值范围:(-∞, +∞)

返回值:

展开
类型 说明
number

转换后的数值。

取值范围:(-∞, +∞)

示例

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct Example {
  5. build() {
  6. Column() {
  7. Flex({ wrap: FlexWrap.Wrap }) {
  8. Column() {
  9. Text("width(220)")
  10. .width(220)
  11. .height(40)
  12. .backgroundColor(0xF9CF93)
  13. .textAlign(TextAlign.Center)
  14. .fontColor(Color.White)
  15. .fontSize('12vp')
  16. }.margin(5)
  17. Column() {
  18. Text("width('220px')")
  19. .width('220px')
  20. .height(40)
  21. .backgroundColor(0xF9CF93)
  22. .textAlign(TextAlign.Center)
  23. .fontColor(Color.White)
  24. }.margin(5)
  25. Column() {
  26. Text("width('220vp')")
  27. .width('220vp')
  28. .height(40)
  29. .backgroundColor(0xF9CF93)
  30. .textAlign(TextAlign.Center)
  31. .fontColor(Color.White)
  32. .fontSize('12vp')
  33. }.margin(5)
  34. Column() {
  35. Text("width('220lpx') designWidth:720")
  36. .width('220lpx')
  37. .height(40)
  38. .backgroundColor(0xF9CF93)
  39. .textAlign(TextAlign.Center)
  40. .fontColor(Color.White)
  41. .fontSize('12vp')
  42. }.margin(5)
  43. Column() {
  44. Text("width(vp2px(220) + 'px')")
  45. .width(this.getUIContext().vp2px(220) + 'px')
  46. .height(40)
  47. .backgroundColor(0xF9CF93)
  48. .textAlign(TextAlign.Center)
  49. .fontColor(Color.White)
  50. .fontSize('12vp')
  51. }.margin(5)
  52. Column() {
  53. Text("fontSize('12fp')")
  54. .width(220)
  55. .height(40)
  56. .backgroundColor(0xF9CF93)
  57. .textAlign(TextAlign.Center)
  58. .fontColor(Color.White)
  59. .fontSize('12fp')
  60. }.margin(5)
  61. Column() {
  62. Text("width(px2vp(220))")
  63. .width(this.getUIContext().px2vp(220))
  64. .height(40)
  65. .backgroundColor(0xF9CF93)
  66. .textAlign(TextAlign.Center)
  67. .fontColor(Color.White)
  68. .fontSize('12fp')
  69. }.margin(5)
  70. }.width('100%')
  71. }
  72. }
  73. }