【毛豆工具集】【UI】【多设备适配】实现与屏幕密度等倍的图片加载

iOS同学,在研发时会使用@2x,@3x来表示对应的屏幕密度下的图片资源,对应的图片资源坐标计算,也是以相对屏幕密度计算之后的取值进行(也就是鸿蒙系统中的vp)。

但是鸿蒙系统中,会存在3.25,3,2.75这种屏幕密度,与官方提供的资源分类方式(如xxldpi、xxxldpi),会存在不对齐的情况(比如,3,2.75这种屏幕密度的设备会优先加载xxldpi限定词中的资源,如果在项目中需要对图片进行像素级的操作,就会产生误差)。

解决上述的问题,可以使用PixelMap,相对于屏幕实际密度对图片进行缩放,这样得出来的图片size就是与当前设备的屏幕密度等倍的图片,像素级的操作即可以在多设备中统一,并没有误差。

代码实现如下:

复制代码
// pixelMap:需要按屏幕密度适配的图片
// oDensity:原图屏幕密度,建议放在默认的资源文件中(非限定词)
function deviceAdaptPic(pixelMap: image.PixelMap, oDensity: number) {
  pixelMap.scaleSync(display.getDefaultDisplaySync().densityPixels / oDensity,
    display.getDefaultDisplaySync().densityPixels / oDensity);
}

代码使用示例:

复制代码
deviceAdaptPic(this.pixelMapScale,4) // 4是原图屏幕密度,建议使用高密度的适配低密度。
相关推荐
花开彼岸天~8 小时前
04 oh-package.json5 与依赖管理:ohpm 包管理器全解析
华为·harmonyos·鸿蒙系统
爸爸6199 小时前
06 项目目录结构与编码规范:三层架构与 DAO 模式实践
华为·架构·harmonyos·鸿蒙系统
不才难以繁此生10 小时前
HarmonyOS 端侧应用实战:中式美食如何把资源、路由、存储和视频拆菜串成一条工程链路
harmonyos·arkts·arkui·中式美食·端侧应用
爸爸61910 小时前
07 ArkTS 基础类型与接口定义:从 TypeScript 到鸿蒙的类型升级
javascript·华为·typescript·harmonyos·鸿蒙系统
绝世番茄11 小时前
鸿蒙 HarmonyOS ArkTS 音乐播放器界面布局深度学习指南
深度学习·华为·list·harmonyos·鸿蒙
不才难以繁此生12 小时前
HarmonyOS 实战|中式美食视频拆菜编辑面板:因子状态、草稿卡片与底部操作条
harmonyos·arkts·中式美食·arkui v2·视频拆菜
在书中成长12 小时前
HarmonyOS 小游戏《对战五子棋》开发第18篇 - 棋盘设计
算法·harmonyos
m0_7496902312 小时前
HarmonyOS 本地备份与系统备份:BackupExtensionAbility、快照导出和恢复
harmonyos
心中有国也有家12 小时前
AtomGit Flutter 鸿蒙客户端:情绪日记的时间线实现
学习·flutter·华为·harmonyos
澹然疏离13 小时前
HarmonyOS应用《民族图鉴》开发第33篇:StorageService——本地存储服务封装
harmonyos