• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 像素单位
2
3为开发者提供4种像素单位,框架采用vp为基准数据单位。
4
5
6| 名称 | 描述                                                         |
7| ---- | ------------------------------------------------------------ |
8| px   | 屏幕物理像素单位。                                           |
9| vp   | 屏幕密度相关像素,根据屏幕像素密度转换为屏幕物理像素,当数值不带单位时,默认单位vp。在实际宽度为1440物理像素的屏幕上,1vp约等于3px。 |
10| fp   | 字体像素,与vp类似适用屏幕密度变化,随系统字体大小设置变化。 |
11| lpx  | 视窗逻辑像素单位,lpx单位为实际屏幕宽度与逻辑宽度(通过designWidth配置)的比值,designWidth默认值为720。当designWidth为720时,在实际宽度为1440物理像素的屏幕上,1lpx为2px大小。 |
12
13
14## 像素单位转换
15
16提供其他单位与px单位互相转换的方法。
17
18| 接口                                                | 描述                                                         |
19| --------------------------------------------------- | ------------------------------------------------------------ |
20| vp2px(value&nbsp;:&nbsp;number)&nbsp;:&nbsp;number  | 将vp单位的数值转换为以px为单位的数值。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
21| px2vp(value&nbsp;:&nbsp;number)&nbsp;:&nbsp;number  | 将px单位的数值转换为以vp为单位的数值。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
22| fp2px(value&nbsp;:&nbsp;number)&nbsp;:&nbsp;number  | 将fp单位的数值转换为以px为单位的数值。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
23| px2fp(value&nbsp;:&nbsp;number)&nbsp;:&nbsp;number  | 将px单位的数值转换为以fp为单位的数值。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
24| lpx2px(value&nbsp;:&nbsp;number)&nbsp;:&nbsp;number | 将lpx单位的数值转换为以px为单位的数值。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
25| px2lpx(value&nbsp;:&nbsp;number)&nbsp;:&nbsp;number | 将px单位的数值转换为以lpx为单位的数值。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
26
27
28## 示例
29
30```ts
31// xxx.ets
32@Entry
33@Component
34struct Example {
35  build() {
36    Column() {
37      Flex({ wrap: FlexWrap.Wrap }) {
38        Column() {
39          Text("width(220)")
40            .width(220)
41            .height(40)
42            .backgroundColor(0xF9CF93)
43            .textAlign(TextAlign.Center)
44            .fontColor(Color.White)
45            .fontSize('12vp')
46        }.margin(5)
47
48        Column() {
49          Text("width('220px')")
50            .width('220px')
51            .height(40)
52            .backgroundColor(0xF9CF93)
53            .textAlign(TextAlign.Center)
54            .fontColor(Color.White)
55        }.margin(5)
56
57        Column() {
58          Text("width('220vp')")
59            .width('220vp')
60            .height(40)
61            .backgroundColor(0xF9CF93)
62            .textAlign(TextAlign.Center)
63            .fontColor(Color.White)
64            .fontSize('12vp')
65        }.margin(5)
66
67        Column() {
68          Text("width('220lpx') designWidth:720")
69            .width('220lpx')
70            .height(40)
71            .backgroundColor(0xF9CF93)
72            .textAlign(TextAlign.Center)
73            .fontColor(Color.White)
74            .fontSize('12vp')
75        }.margin(5)
76
77        Column() {
78          Text("width(vp2px(220) + 'px')")
79            .width(vp2px(220) + 'px')
80            .height(40)
81            .backgroundColor(0xF9CF93)
82            .textAlign(TextAlign.Center)
83            .fontColor(Color.White)
84            .fontSize('12vp')
85        }.margin(5)
86
87        Column() {
88          Text("fontSize('12fp')")
89            .width(220)
90            .height(40)
91            .backgroundColor(0xF9CF93)
92            .textAlign(TextAlign.Center)
93            .fontColor(Color.White)
94            .fontSize('12fp')
95        }.margin(5)
96
97        Column() {
98          Text("width(px2vp(220))")
99            .width(px2vp(220))
100            .height(40)
101            .backgroundColor(0xF9CF93)
102            .textAlign(TextAlign.Center)
103            .fontColor(Color.White)
104            .fontSize('12fp')
105        }.margin(5)
106      }.width('100%')
107    }
108  }
109}
110```
111
112![zh-cn_image_0000001169582302](figures/zh-cn_image_0000001169582302.png)
113