HarmonyOS 6 ArkUI 像素单位使用文档
文章目录HarmonyOS 6 ArkUI 像素单位使用文档单位基础说明1. 核心单位释义2. 数值写法规则示例代码代码逐段解析1. 纯数字尺寸 width(220)2. 物理像素 width(220px)3. 字符串格式 vp width(220vp)4. 逻辑像素 width(220lpx)5. vp 转 pxvp2px(value)6. 字体单位 fontSize(12fp)7. px 转 vppx2vp(value)运行效果总结HarmonyOS 6 ArkUI 像素单位使用文档单位基础说明1. 核心单位释义单位全称用途 特性vpVirtual Pixel虚拟像素布局首选单位屏幕密度自适应不同设备视觉尺寸一致推荐用于宽高、边距、布局尺寸px物理像素设备真实像素点不做适配不同密度设备显示大小不一致多用于原生能力对接、图片精准尺寸lpx逻辑像素基于设计稿宽度做等比缩放多端UI统一设计稿时优先使用需配合全局designWidth配置fpFont Pixel字体像素文字专用单位跟随系统字体大小设置变化仅用于文本字号2. 数值写法规则纯数字默认等价vp例width(220)width(220vp)字符串带单位明确指定单位例width(220px)、width(220lpx)动态计算值支持表达式拼接、单位转换API返回值示例代码Entry Component struct Example { build() { Column() { Flex({ wrap: FlexWrap.Wrap }) { // 1. 纯数字写法默认单位 vp Column() { Text(width(220)) .width(220) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) .fontSize(12vp) }.margin(5) // 2. 显式指定 px 单位 Column() { Text(width(220px)) .width(220px) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) }.margin(5) // 3. 显式指定 vp 单位字符串格式 Column() { Text(width(220vp)) .width(220vp) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) .fontSize(12vp) }.margin(5) // 4. lpx 逻辑像素依赖全局 designWidth Column() { Text(width(220lpx) designWidth:720) .width(220lpx) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) .fontSize(12vp) }.margin(5) // 5. vp 转 pxvp2px() 单位转换 Column() { Text(width(vp2px(220) px)) .width(this.getUIContext().vp2px(220) px) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) .fontSize(12vp) }.margin(5) // 6. fp 字体专用单位 Column() { Text(fontSize(12fp)) .width(220) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) .fontSize(12fp) }.margin(5) // 7. px 转 vppx2vp() 单位转换 Column() { Text(width(px2vp(220))) .width(this.getUIContext().px2vp(220)) .height(40) .backgroundColor(0xF9CF93) .textAlign(TextAlign.Center) .fontColor(Color.White) .fontSize(12fp) }.margin(5) }.width(100%) } } }运行效果如图代码逐段解析1. 纯数字尺寸width(220)写法直接传入数字默认单位为 vp等价写法width(220vp)适用常规布局宽高、间距鸿蒙标准推荐写法。2. 物理像素width(220px)显式声明px单位代表设备真实物理像素特点不同分辨率设备展示尺寸差异大不推荐常规布局使用仅用于对接原生接口、图片固定像素尺寸场景。3. 字符串格式 vpwidth(220vp)显式字符串声明 vp语义更清晰和纯数字写法效果完全一致团队规范要求统一单位写法时可优先使用。4. 逻辑像素width(220lpx)lpx基于全局配置的designWidth设计稿宽度做等比缩放示例标注designWidth:720表示以 720px 作为基准设计稿多设备自动等比适配适用整套UI基于统一设计稿出图的跨设备项目。5. vp 转 pxvp2px(value)APIthis.getUIContext().vp2px(220)作用将虚拟像素 vp 换算为当前设备物理像素 px返回数值可拼接px字符串使用场景需要向原生组件/系统接口传递物理像素尺寸时使用。6. 字体单位fontSize(12fp)fp专门用于文字字号会跟随系统「字体大小」设置动态变化规范文本字号禁止使用 vp/px统一使用 fp。7. px 转 vppx2vp(value)APIthis.getUIContext().px2vp(220)作用将物理像素 px 反向换算为虚拟像素 vp直接作为尺寸参数传入场景已有图片/素材标注为 px需要转为布局适配单位时使用。运行效果页面使用流式弹性布局Flex(FlexWrap.Wrap)所有示例卡片自动换行展示纯数字220与220vp视觉宽度完全相同220px在高分屏设备上会显示更小/更大无自适应能力220lpx根据全局设计稿宽度自动缩放多设备视觉统一转换API计算出的尺寸与直接书写对应单位效果一致fp字体可在系统设置调整字体大小后实时看到文字缩放变化。总结布局尺寸宽/高/边距/圆角优先使用vp纯数字 或xxvp文本字号强制使用fp统一设计稿跨端使用lpx并在项目入口配置designWidth对接原生/底层接口使用px配合vp2px/px2vp做转换如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是持续创作的动力