鸿蒙学习笔记二十:屏幕适配

鸿蒙的屏幕适配我们采用了跟安卓一样的dimen方案,即将屏幕宽度分成375份,每份是一个dimen,具体公式如下:
dimen_1 = 屏幕宽度 / 屏幕密度 / 375
代码如下:
import display from '@ohos.display'


export class DimensStyle {
  private dimen_1: number = 0

  dimen(i: number): number {
    return Number((i * this.dimen_1).toFixed(2))
  }

  constructor() {
    let dip = 360
    if (display.getDefaultDisplaySync() && display.getDefaultDisplaySync().width && display.getDefaultDisplaySync().densityPixels) {
      dip = display.getDefaultDisplaySync().width / display.getDefaultDisplaySync().densityPixels
    }

    let dimen_1 = 1 * (dip / 375)
    this.dimen_1 = dimen_1
  }
}
用法如下:
Image('')
          .width(Dimens.dimen(15))
          .height(Dimens.dimen(3))
注意点:
1:需要在 DimensStyle 所在模块的 Index.ets 文件中进行声明,否则不能全局引用,具体声明代码如下:
import { DimensStyle } from "./src/main/ets/styles/DimensStyle"

const Dimens = new DimensStyle()

export {
  Dimens
}
2:这种方法不需要进行额外配置,也不用生成不同分辨率下的dimen文件,使用时系统会自动将自定义的dimen值进行转换
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • 前言 上篇文章介绍了在屏幕适配上遇到的问题,采用px或者dp都会与设计稿存在一定的偏差,也详细的介绍了dp和dpi...
    static_sadhu阅读 1,054评论 0 1
  • 更新:由于该适配方案越来越多人使用,也有很多人遇到不太理解的问题。所以为了大家更好的使用,我将文章很多内容更新了,...
    KingWorld阅读 8,598评论 4 19
  • 更新:由于该适配方案越来越多人使用,也有很多人遇到不太理解的问题。所以为了大家更好的使用,我将文章很多内容更新了,...
    代码小王子阅读 1,388评论 0 2
  • 更新:由于该适配方案越来越多人使用,也有很多人遇到不太理解的问题。所以为了大家更好的使用,我将文章很多内容更新了,...
    wildma阅读 232,784评论 355 1,139
  • 此文章转自:https://www.jianshu.com/p/1302ad5a4b04 学习记录使用。 前言 网...
    飛鱼先生阅读 558评论 0 0

友情链接更多精彩内容