HarmonyOS鸿蒙Next开发应用,图片资源该用几倍图适合。
开发者您好,您这边想用二倍图或者是三倍图都是可以的,不限制您这边使用几倍图,当前可使用资源限定词的方式,对资源文件进行标注,与安卓在使用上类似。具体参考下这个文档说明:资源分类与访问。
更多关于HarmonyOS鸿蒙Next开发应用,图片资源该用几倍图适合。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
一、鸿蒙应用图片资源的 “倍数图” 规范
鸿蒙不像 iOS 那样直接用 [@2x](/user/2x)/[@3x](/user/3x) 后缀区分倍数,而是通过多分辨率目录 + 自动适配的方式管理图片资源,核心适配的是「像素密度(dpi)」维度,对应不同设备的屏幕分辨率,以下是官方推荐的倍数 / 目录配置:
| 像素密度区间(dpi) | 对应目录名称 | 等效 iOS 倍数 | 适配设备场景 | 图片尺寸基准(以 100×100 基准图为例) |
|---|---|---|---|---|
| 120 ≤ dpi < 160 | mdpi | @1x | 低分辨率入门机型(极少) | 100×100 |
| 160 ≤ dpi < 240 | hdpi | @1.5x | 入门级手机 / 平板 | 150×150 |
| 240 ≤ dpi < 320 | xhdpi | @2x | 主流中高端手机(最核心) | 200×200 |
| 320 ≤ dpi < 480 | xxhdpi | @3x | 旗舰手机 / 高清平板 | 300×300 |
| 480 ≤ dpi < 640 | xxxhdpi | @4x | 超高清屏旗舰 / 折叠屏 | 400×400 |
关键:鸿蒙会根据设备的 dpi 自动匹配对应目录的图片,若某目录缺失,会从高分辨率目录缩放(如设备是 xhdpi 但无对应图,会取 xxhdpi 图缩放到 2x),或从低分辨率目录拉伸(易模糊)。
二、鸿蒙图片资源的配置方法
1. 目录结构(工程内标准布局)
在鸿蒙应用工程的 src/main/resources/ 目录下,按 dpi 创建子目录,图片按相同名称放入对应目录:
resources/
├── base/ # 基础目录(放非图片资源,如字符串)
├── mdpi/ # 1x图目录
│ └── media/ # 图片统一放media子目录
│ └── icon.png # 100×100
├── hdpi/ # 1.5x图目录
│ └── media/
│ └── icon.png # 150×150
├── xhdpi/ # 2x图目录(核心)
│ └── media/
│ └── icon.png # 200×200
├── xxhdpi/ # 3x图目录
│ └── media/
│ └── icon.png # 300×300
└── xxxhdpi/ # 4x图目录
└── media/
└── icon.png # 400×400
2. 代码中引用(无需区分倍数)
鸿蒙会自动根据设备 dpi 加载对应目录的图片,代码中只需写图片名称,无需指定倍数:
// Java方式
Image image = new Image();
image.setImageSource(ResourceTable.Media_icon); // 自动匹配dpi对应的icon.png
// ArkTS(ETS)方式
Image('icon') // 直接引用media目录下的icon,自动适配
3. 简化配置
若不想维护多套图,可只保留 xhdpi(2x) 和 xxhdpi(3x) 两套(覆盖 95% 以上设备),鸿蒙会自动缩放适配其他 dpi 设备;超高清屏(xxxhdpi)可按需补充,避免拉伸模糊。
三、专题性官方资料
华为开发者联盟提供了完整的图片资源设计 / 开发规范,以下是核心资料链接和重点:
1. 核心规范文档(必看)
- 《鸿蒙应用开发 - 资源分类与访问》链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/resource-classification-and-access-0000001053222401-V2 重点:明确多分辨率资源(图片、布局)的目录规则、优先级、适配逻辑,包含代码引用示例。
- 《鸿蒙设计系统 - 视觉资源设计规范》链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/design-visual-resource-0000001052886028-V2 重点:图片尺寸基准、分辨率适配原则、切图规范(如圆角、透明度、格式要求)。
2. 补充说明
- 图片格式推荐:优先使用 WebP(体积小、画质高),其次 PNG(透明背景)、JPG(实景图);
- 矢量图替代:简单图标(如按钮、logo)推荐用 SVG/Vector Vector Graphic(矢量图),无需适配倍数,自动缩放无模糊;
- 自适应布局:结合鸿蒙的
dp单位(而非px),图片尺寸用dp定义,配合多分辨率图,实现跨设备统一视觉效果。
四、和 iOS 的核心区别总结
| 维度 | iOS | 鸿蒙 |
|---|---|---|
| 区分方式 | 文件名后缀(@2x) | 目录区分(xhdpi/xxhdpi) |
| 核心适配维度 | 屏幕倍率(@1x/@2x) | 像素密度(dpi) |
| 引用方式 | 需指定后缀(或自动) | 统一名称,自动匹配目录 |
| 简化方案 | 只做 @2x/@3x | 优先 2x(xhdpi)+3x(xxhdpi) |
建议用4倍,但是展示时需要注意实际的像素大小,会随屏幕密度而转换。
比如,4倍图,在屏幕密度为2 的设备上,实际展示的大小像素会*2 (4倍图 / 屏幕密度2)
爱用几倍就几倍,不违反UX设计就行
懒人包:用3X图。
总的来说,HarmonyOS是一款非常优秀的操作系统,期待它能在未来带给我们更多惊喜!
在HarmonyOS Next应用开发中,处理图片资源(多倍图)的核心原则是基于屏幕密度(screen density)进行适配,这与iOS的@2x、@3x思路相似,但具体实现和目录结构有所不同。
1. 核心概念:屏幕密度等级
HarmonyOS定义了不同的屏幕密度等级,并为每个等级建议了基准的缩放比例。开发时,你需要为不同的密度等级提供对应的图片资源。
目前主要的密度等级(与Android的mdpi、hdpi、xhdpi等概念对应,但具体数值和名称是HarmonyOS定义的)包括:
- sdpi: 缩放基准约为0.75(小尺寸低密度屏幕,现已较少见)
- mdpi: 缩放基准为1.0(基准密度,作为设计参考)
- ldpi: 缩放基准约为1.5(常见于标准密度屏幕)
- hdpi: 缩放基准约为2.0(高密度屏幕,如多数旗舰机)
- xhdpi: 缩放基准约为3.0(超高密度屏幕)
- xxhdpi: 缩放基准约为4.0(超超高密度屏幕)
简单来说,你可以将 mdpi 视为 1x,hdpi 视为 2x,xhdpi 视为 3x,以此类推。
2. 资源目录结构
在HarmonyOS Next项目的 resources 目录下,你需要按照以下结构放置图片资源:
resources/
├── base/
│ ├── media/ (这里放置通用或fallback资源,非必须)
│ └── ...
├── en_US/ (英文资源)
├── zh_CN/ (中文资源)
└── **{密度限定符}**/ (核心:按密度分类的图片资源目录)
└── media/
└── icon.png
关键的 {密度限定符} 目录命名规则如下:
ldpi/: 对应ldpi密度资源mdpi/: 对应mdpi密度资源(可视为1倍图基准)hdpi/: 对应hdpi密度资源(可视为2倍图)xhdpi/: 对应xhdpi密度资源(可视为3倍图)xxhdpi/: 对应xxhdpi密度资源(可视为4倍图)
示例:
如果你有一个图标 icon.png,你应当准备多个版本,并放入对应目录:
resources/ldpi/media/icon.png(1.5倍尺寸,如果设计稿以mdpi为基准,则这里放1.5倍大小的图)resources/mdpi/media/icon.png(1倍尺寸,基准图)resources/hdpi/media/icon.png(2倍尺寸)resources/xhdpi/media/icon.png(3倍尺寸)resources/xxhdpi/media/icon.png(4倍尺寸)
3. 设计稿与切图建议
-
以
mdpi作为设计基准: 在UI设计时,建议以mdpi(1x)下的逻辑像素尺寸进行设计。例如,一个图标的显示区域希望是 48x48 逻辑像素。 -
导出多倍图: 根据上述密度等级,导出对应物理像素尺寸的图片。
mdpi(1x): 48px × 48pxhdpi(2x): 96px × 96pxxhdpi(3x): 144px × 144pxxxhdpi(4x): 192px × 192px- (
ldpi(1.5x): 72px × 72px,可根据目标设备覆盖情况决定是否提供)
-
在代码或XML中引用: 引用资源时,只需使用基础名称(如
icon),系统会根据当前运行设备的屏幕密度,自动从匹配的{密度限定符}目录下选择最合适的图片。<Image ohos:width="48vp" ohos:height="48vp" ohos:image_src="$media:icon" />// ArkTS示例 Image($r('app.media.icon')) .width(48) .height(48)
4. 实践要点
- 必须提供
mdpi资源:mdpi目录下的资源是必须的,它作为基准和回退选项。 - 系统自动匹配: 你不需要在代码中判断设备密度。系统会自动选择最接近设备密度的资源目录中的图片。如果精确匹配的目录不存在,系统会寻找最接近的密度目录,并缩放图片,但这可能影响效果和性能。
- 覆盖主流密度: 为了获得最佳显示效果,建议至少提供
mdpi、hdpi、xhdpi这三个主流密度的资源。xxhdpi对于高端设备或折叠屏的某些场景也很重要。 - 使用
.webp格式: 强烈建议使用.webp格式替代.png,以显著减少应用包体积。HarmonyOS 原生支持.webp。
总结:
HarmonyOS Next应用图片资源适配,本质是为 resources/ 下的不同 {密度限定符}(如 mdpi/, hdpi/, xhdpi/)目录提供不同物理尺寸的图片。设计时以 mdpi (1x) 为基准进行逻辑尺寸设计,然后按比例导出 2x, 3x, 4x 的图片放入对应目录。在代码中统一使用资源名引用,系统自动完成适配。 这与iOS的 image.png, image[@2x](/user/2x).png, image[@3x](/user/3x).png 放在同一目录下的方式不同,但原理相通。


