drawable 资源目录取决于其实际屏幕密度(dpi)
在 Android 中,drawable 资源的目录划分主要依据屏幕密度(dpi) ,而非直接依赖屏幕分辨率(1920x1080 这类像素尺寸)。对于屏幕密度为 213dpi 的设备,资源应优先放在 drawable-hdpi 目录。
具体分析:
-
Android 屏幕密度的 “标准桶” 划分Android 将屏幕密度划分为多个 “标准密度桶”(density bucket),每个桶对应一个典型 dpi 值及范围,系统会根据设备实际密度匹配最接近的桶:
密度桶 典型 dpi 包含的 dpi 范围 ldpi 120 0 ~ 140 mdpi(基准) 160 140 ~ 180 hdpi 240 180 ~ 260 xhdpi 320 260 ~ 340 xxhdpi 480 340 ~ 560 xxxhdpi 640 560 ~ 720 -
213dpi 对应的密度桶你的设备密度为 213dpi,落在 180 ~ 260 的范围内,对应 hdpi 密度桶(典型值 240dpi)。因此,系统会优先加载
drawable-hdpi目录下的资源。 -
为什么不看分辨率? 分辨率(1920x1080)是屏幕的像素总数,而密度(dpi)反映 “每英寸的像素数”(决定 UI 元素的物理大小,如 1dp 对应多少像素)。相同分辨率的屏幕可能有不同密度(例如:1080P 屏幕可能是 320dpi 属于 xhdpi,也可能是 213dpi 属于 hdpi),因此资源目录只由密度决定。
-
资源加载逻辑若
drawable-hdpi目录中没有所需资源,系统会自动从其他密度目录 “缩放” 资源:- 从更高密度目录(如 xhdpi)加载资源并缩小;
- 从更低密度目录(如 mdpi)加载资源并放大。缩放可能导致资源模糊或拉伸,因此优先放在匹配的
drawable-hdpi目录可保证最佳显示效果。
结论:
屏幕密度 213dpi 的设备,drawable 资源应优先放在 res/drawable-hdpi/ 目录。