鸿蒙开发-像素单位

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

px

屏幕物理像素单位。

vp

屏幕密度相关像素,根据屏幕像素密度转换为屏幕物理像素,当数值不带单位时,默认单位vp。在实际宽度为1440物理像素的屏幕上,1vp约等于3px。

fp

字体像素,与vp类似适用屏幕密度变化,随系统字体大小设置变化。

lpx

视窗逻辑像素单位,lpx单位为实际屏幕宽度与逻辑宽度(通过designWidth

配置)的比值,designWidth默认值为720。当designWidth为720时,在实际宽度为1440物理像素的屏幕上,1lpx为2px大小。

这里对这几个单位进行介绍

  • px 比较容易理解,跟Android、iOS 平台的是一致的。px:像素的单位,1px代表手机屏幕上的一个像素点。比如常见的手机分辨率有320×480,480×800,1080×1920等,这些数值的单位都是px;由于px在不同手机上的大小不同,差别较大,适配性太差,不建议使用。
  • vp 相当于Android 里面的 dp。 由于手机分辨率不同,应用中用到的图片某个固定尺寸大小的图片,或某个固定字号的文本就会因手机分辨力不同而出现失真或变形的情况,为了更好的适配不同的手机,故而就有了不依赖与像素的单位vp(还有fp,这个相当于Android 的 sp)。

使用虚拟像素vp,使元素在不同密度的设备上具有一致的视觉体量。

  • fp:上面介绍过了,跟 vp 类似,主要用于字体大小;
  • lpx:这是比 Android 多的一个单位,多这个的原因,是因为鸿蒙是跨端的,也就是存在 pc、pad 等,在其他的端存在视窗可以拉长缩小的情况,所以这个主要是应用在需要适配多端的场景。

综上,如果没有特殊诉求,一般都使用vp,或者调用系统提供的vp2px(10) + 'px'这种方式。

也就是

// xxx.ets
@Entry
@Component
struct Example {
  build() {
    Column() {
      Flex({ wrap: FlexWrap.Wrap }) {

        Column() {
          Text("width('220vp')")
            .width('220vp')
            .height(40)
            .backgroundColor(0xF9CF93)
            .textAlign(TextAlign.Center)
            .fontColor(Color.White)
            .fontSize('12vp')
        }.margin(5)

        Column() {
          Text("width(vp2px(220) + 'px')")
            .width(vp2px(220) + 'px')
            .height(40)
            .backgroundColor(0xF9CF93)
            .textAlign(TextAlign.Center)
            .fontColor(Color.White)
            .fontSize('12vp')
        }.margin(5)
    }
  }
}
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值