【毛豆工具集】【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是原图屏幕密度,建议使用高密度的适配低密度。
相关推荐
liulian091611 小时前
Flutter for OpenHarmony 跨平台开发:BMI计算器功能实战指南
flutter·华为
xmdy586614 小时前
Flutter+开源鸿蒙实战|智安盾电商溯源平台Day1 项目搭建与整体方案拆解
flutter·开源·harmonyos
nashane15 小时前
HarmonyOS 6学习:应用签名文件丢失处理与更新完全指南
学习·华为·harmonyos·harmonyos 5
笔触狂放16 小时前
【项目】基于ArkTS的老年人智能应用开发(1)
harmonyos·arkts·鸿蒙
24白菜头18 小时前
【无标题】
c++·笔记·学习·harmonyos
LeesonWong19 小时前
Neo 构建鸿蒙应用【二】:技术路线全解
harmonyos
LeesonWong19 小时前
Neo 构建鸿蒙应用【三】:实战社交应用与工程感悟
harmonyos
xmdy586620 小时前
Flutter+开源鸿蒙实战|智联邻里Day6 引入GetX全局架构+升级版下拉刷新+Toast弹窗+网络状态监听
flutter·开源·harmonyos
斯班奇的好朋友阿法法21 小时前
鸿蒙 vs iOS vs 微信小程序:开发平台全面对比
ios·微信小程序·harmonyos
xmdy586621 小时前
Flutter+开源鸿蒙实战|智联邻里Day5 闲置详情页+删除功能+下拉刷新+交互优化
flutter·开源·harmonyos