当前位置: 首页 > news >正文

HarmonyOS 6 ArkUI 像素单位使用文档

文章目录

  • HarmonyOS 6 ArkUI 像素单位使用文档
    • 单位基础说明
      • 1. 核心单位释义
      • 2. 数值写法规则
    • 示例代码
    • 代码逐段解析
      • 1. 纯数字尺寸 `width(220)`
      • 2. 物理像素 `width('220px')`
      • 3. 字符串格式 vp `width('220vp')`
      • 4. 逻辑像素 `width('220lpx')`
      • 5. vp 转 px:`vp2px(value)`
      • 6. 字体单位 `fontSize('12fp')`
      • 7. px 转 vp:`px2vp(value)`
    • 运行效果
    • 总结

HarmonyOS 6 ArkUI 像素单位使用文档

单位基础说明

1. 核心单位释义

单位全称用途 & 特性
vpVirtual Pixel(虚拟像素)布局首选单位,屏幕密度自适应,不同设备视觉尺寸一致,推荐用于宽高、边距、布局尺寸
px物理像素设备真实像素点,不做适配,不同密度设备显示大小不一致,多用于原生能力对接、图片精准尺寸
lpx逻辑像素基于设计稿宽度做等比缩放,多端UI统一设计稿时优先使用,需配合全局designWidth配置
fpFont Pixel(字体像素)文字专用单位,跟随系统字体大小设置变化,仅用于文本字号

2. 数值写法规则

  1. 纯数字:默认等价vp,例:width(220)=width('220vp')
  2. 字符串带单位:明确指定单位,例:width('220px')width('220lpx')
  3. 动态计算值:支持表达式拼接、单位转换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 转 px:vp2px() 单位转换 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 转 vp:px2vp() 单位转换 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 转 px:vp2px(value)

  • API:this.getUIContext().vp2px(220)
  • 作用:将虚拟像素 vp 换算为当前设备物理像素 px,返回数值可拼接px字符串使用
  • 场景:需要向原生组件/系统接口传递物理像素尺寸时使用。

6. 字体单位fontSize('12fp')

  • fp专门用于文字字号,会跟随系统「字体大小」设置动态变化
  • 规范:文本字号禁止使用 vp/px,统一使用 fp。

7. px 转 vp:px2vp(value)

  • API:this.getUIContext().px2vp(220)
  • 作用:将物理像素 px 反向换算为虚拟像素 vp,直接作为尺寸参数传入
  • 场景:已有图片/素材标注为 px,需要转为布局适配单位时使用。

运行效果

  1. 页面使用流式弹性布局Flex(FlexWrap.Wrap),所有示例卡片自动换行展示;
  2. 纯数字220'220vp'视觉宽度完全相同;
  3. 220px在高分屏设备上会显示更小/更大,无自适应能力;
  4. 220lpx根据全局设计稿宽度自动缩放,多设备视觉统一;
  5. 转换API计算出的尺寸与直接书写对应单位效果一致;
  6. fp字体可在系统设置调整字体大小后,实时看到文字缩放变化。

总结

  1. 布局尺寸(宽/高/边距/圆角):优先使用vp(纯数字 或xxvp
  2. 文本字号:强制使用fp
  3. 统一设计稿跨端:使用lpx,并在项目入口配置designWidth
  4. 对接原生/底层接口:使用px,配合vp2px/px2vp做转换

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

http://www.jsqmd.com/news/951300/

相关文章:

  • 2026年6月高频机厂家推荐排行榜:高周波塑料热合机、自动高频机设备、服装高频机模具及全自动高频机源头厂商精选 - 企业推荐官【官方】
  • 基于Arduino与ESP8266的宠物机器人球DIY:物联网与低功耗设计实践
  • DeepSeek-V4:长上下文与Agent协同驱动的工作流重构
  • 大疆无人机固件自由:3步掌握DankDroneDownloader终极指南
  • 手把手教你学Simulink--基于峰值电流模式的 Boost 变换器建模与环路补偿仿真
  • 2026 曲靖卫生间漏水、外墙、楼顶、地下室、阳光房渗漏维修师傅推荐|同城附近上门防水补漏公司测评 - 企业资讯
  • 华为健康数据导出终极指南:3分钟将HiTrack转换为TCX格式
  • Occupancy Network 凭什么成为自动驾驶空间理解的核心技术?| 全网独家复现稠密体素空间建模、彻底摒弃传统3D检测类别绑定桎梏、实现开放式全场景泛化感知、强力赋能复杂城市NOA与无图智驾
  • Git 共享分支安全撤销提交与 Gerrit Change-Id 问题处理指南
  • DNS 的工作原理:面向开发者的图解指南
  • 开源中国加入OpenChain,参与全球开源供应链安全标准建设,筑牢国产化安全底座
  • 掌握《塞尔达传说:旷野之息》存档转换:Switch与WiiU跨平台游戏进度同步终极指南
  • 构建私有化安全协作平台:以金融级协作平台与全链路安全防护体系重塑政企数字化底座
  • 揭秘低查重AI教材生成秘诀!AI教材写作工具实测,高效产出精品教材!
  • 别再手动抄表了!用PaddleOCR超轻量模型5分钟搞定数字仪表识别(附完整Python代码)
  • 2026苏州PLC培训标杆名录:三家机构实力对比解析 - 互联网科技品牌测评
  • Spring AI Ollama 连接超时问题排查与解决:OkHttp 读超时配置全指南
  • 告别pip install失败!手把手教你两种搞定Python Click安装的方法(含离线包下载)
  • 安卓个人记账App完整可运行工程:含APK安装包、MySQL后端对接源码与AS开发环境
  • 3步轻松解决博德之门3模组混乱问题:BG3ModManager完全指南
  • 2026 保山卫生间漏水、外墙、楼顶、地下室、阳光房渗漏维修师傅推荐|同城附近上门防水补漏公司测评 - 企业资讯
  • 实战应用:基于快马生成的代码打造个人专属tvbox配置管理工具
  • 告别重复劳动:用快马AI智能生成ROS消息、服务与启动文件
  • 基于Arduino Pro Mini的便携式游戏机DIY全流程指南
  • 2026年炸鸡店创业品牌推荐榜:合肥/南京韩式炸鸡外卖,低成本社区档口与夜宵店优质之选! - 品牌企业推荐师(官方)
  • 保姆级教程:用D435i录制ROS bag文件,一步步转成BundleFusion能吃的.sens格式
  • 2026昆山PLC培训排行:从硬件到就业的客观评估 - 互联网科技品牌测评
  • 电缆钢丝绳缺陷损伤智能检测系统|YOLOv8电力桥梁基础设施安全监测解决方案
  • 如何高效进行单倍体变异检测:Snippy工具实战指南
  • C++11(二) 革新:引用折叠与lambda表达式