【毛豆工具集】【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是原图屏幕密度,建议使用高密度的适配低密度。
相关推荐
一目Leizi3 小时前
折叠屏适配踩坑实录:从“一展开就变形“到一套代码适配多种形态【鸿蒙心迹】
华为·harmonyos
马剑威(威哥爱编程)4 小时前
【HarmonyOS 7 小艺智能体实战】03:第一次建智能体——在小艺开放平台把骨架立起来
人工智能·华为·harmonyos
KevinChaos4 小时前
HarmonyOS 7.0 端侧3DGS实验⑤:空洞、漂浮伪影与视角稳定
harmonyos
fellow995 小时前
DSH Desktop - HarmonyOS Edition
harmonyos·openharmony·deepseek·deepseekharness
鸿蒙开发5 小时前
鸿蒙表单异步校验实战:@hmkit/validator 1.3 的取消、超时与任务清理
harmonyos
Flutter_OH5 小时前
Flutter OHOS 核心对象架构原理说明
harmonyos
贾伟康6 小时前
【健康菜谱助手|04】HarmonyOS ArkTS 一周膳食计划实战:管理日期、餐次与菜谱替换的联动
软件测试·移动开发·harmonyos·arkts·arkui·1024程序员节
贾伟康6 小时前
【健康菜谱助手|02】HarmonyOS ArkTS 烹饪步骤实战:把分步操作、完成状态和返回恢复做稳
软件测试·移动开发·harmonyos·arkts·arkui
用户29469405448167 小时前
DSH Desktop - HarmonyOS Edition
harmonyos·deepseek
OH_TPC8 小时前
【鸿蒙优选三方库】@ohos/ffmpeg-kit:把 FFmpeg 的全部能量带进鸿蒙
华为·ffmpeg·harmonyos·鸿蒙