当前位置: 首页 > 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.gsyq.cn/news/1462917.html

相关文章:

  • 大疆无人机固件自由:3步掌握DankDroneDownloader终极指南
  • DNS 的工作原理:面向开发者的图解指南
  • 构建私有化安全协作平台:以金融级协作平台与全链路安全防护体系重塑政企数字化底座
  • 揭秘低查重AI教材生成秘诀!AI教材写作工具实测,高效产出精品教材!
  • 2026苏州PLC培训标杆名录:三家机构实力对比解析 - 互联网科技品牌测评
  • 实战应用:基于快马生成的代码打造个人专属tvbox配置管理工具
  • 基于Arduino Pro Mini的便携式游戏机DIY全流程指南
  • 2026年炸鸡店创业品牌推荐榜:合肥/南京韩式炸鸡外卖,低成本社区档口与夜宵店优质之选! - 品牌企业推荐师(官方)
  • 2026昆山PLC培训排行:从硬件到就业的客观评估 - 互联网科技品牌测评
  • LinkSwift:5分钟掌握网盘直链解析终极方案,告别限速烦恼
  • 告别熬夜改PPT!百考通AI,一站式解决高校答辩PPT制作难题
  • 3步免费解锁Grammarly Premium高级版:autosearch-grammarly-premium-cookie完整指南
  • 如何在微信小程序中快速生成二维码:weapp-qrcode终极指南
  • 政企专属的私有化安全协作平台,构建金融级全链路安全防护体系
  • 计算机毕业设计之基于数据挖掘算法的电影推荐系统
  • 央视大推特推的OPC(一人公司),我做了!
  • 原创性如何?8款AI论文网站势力榜,毕业季救星!
  • Django Auth 系统底层剖析与用户模型重构
  • 2026年窗户漏水深度选型:如何为你的家庭匹配最佳方案 - 资讯纵览
  • 2026 揭阳卫生间漏水、外墙、楼顶、地下室、阳光房渗漏维修师傅推荐|同城附近上门防水补漏公司测评 - 企业资讯
  • Mac菜单栏太乱?3步用Ice打造清爽高效工作空间
  • 计算机毕业设计之基于协同过滤算法的大学生职业推荐系统设计与实现
  • CSS Grid 实战布局模式:从基础到生产级方案
  • 2026 贵阳卫生间漏水、外墙、楼顶、地下室、阳光房渗漏维修师傅推荐|同城附近上门防水补漏公司测评 - 企业资讯
  • 不止于登录注销:基于 Session 与 JWT 的无状态/有状态认证实战
  • codex接入deepseek,so easy!
  • Java开发必知必会的MySQL核心知识点(二)-索引探秘:让你的查询快如闪电
  • 2026 清远卫生间漏水、外墙、楼顶、地下室、阳光房渗漏维修师傅推荐|同城附近上门防水补漏公司测评 - 企业资讯
  • 2026 宁波卫生间漏水、外墙、楼顶、地下室、阳光房渗漏维修师傅推荐|同城附近上门防水补漏公司测评 - 企业资讯
  • 2026最新Postman免费安装教程,附汉化安装包