【毛豆工具集】【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是原图屏幕密度,建议使用高密度的适配低密度。
相关推荐
l134062082352 小时前
344.在鸿蒙上使用 animations Flutter 包的指南
flutter·华为·harmonyos
灯前目力虽非昔,犹课蝇头二万言。3 小时前
HarmonyOS笔记12:生命周期
笔记·华为·harmonyos
Random_index5 小时前
#HarmonyOS篇:学习UI规范基本语法&&学习UI范式装填管理V1&&学习UI范式装填管理V2&&学习UI范式渲染控制
harmonyos
前端世界5 小时前
鸿蒙分布式权限管理实战指南:架构原理 + 可运行 Demo
分布式·架构·harmonyos
LRX_1989275 小时前
华为设备配置练习(八)策略路由配置
服务器·网络·华为
SmartBrain5 小时前
解读:《华为变革法:打造可持续进步的组织》
大数据·人工智能·华为·语言模型
挨踢攻城5 小时前
华为认证高级工程师HCIP考证难度大吗?如何获得?不同方向考点对比?
华为·hcie·hcia·hcip·hcip考试
前端世界6 小时前
鸿蒙分布式通信安全实践:中间人攻击原理与防御实现
分布式·华为·harmonyos
航Hang*6 小时前
第六章:网络系统建设与运维(中级)——链路聚合
运维·服务器·网络·笔记·华为·ensp