【毛豆工具集】【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是原图屏幕密度,建议使用高密度的适配低密度。
相关推荐
寒季6665 小时前
Electron 实战:构建跨平台桌面端 Markdown 编辑器(含实时预览、文件操作、快捷键)
华为·electron·harmonyos
夜雨声烦丿8 小时前
Flutter 框架跨平台鸿蒙开发 - 思维导图开发教程
flutter·华为·harmonyos
IT陈图图8 小时前
基于 Flutter × OpenHarmony 开发的文本处理工具箱首页
flutter·华为·openharmony
小白阿龙8 小时前
鸿蒙+Flutter 跨平台开发——一款“随机宝盒“的开发流程
flutter·华为·harmonyos·鸿蒙
小雨青年9 小时前
鸿蒙 HarmonyOS 6 | 逻辑核心 (05):数据持久化 Preferences 的封装最佳实践
华为·harmonyos
哈哈你是真的厉害9 小时前
基础入门 React Native 鸿蒙跨平台开发:多种Switch 开关介绍
react native·react.js·harmonyos
AI_零食10 小时前
鸿蒙跨端框架 Flutter 学习 Day 6:异步编程:等待的艺术
学习·flutter·华为·交互·harmonyos·鸿蒙
全栈开发圈10 小时前
干货分享|鸿蒙6实战入门指南
华为·harmonyos
猛扇赵四那边好嘴.11 小时前
Flutter 框架跨平台鸿蒙开发 - 旅游足迹记录本应用开发教程
flutter·华为·harmonyos·旅游
鸣弦artha11 小时前
Flutter框架跨平台鸿蒙开发——Button组件基础
flutter·华为·harmonyos