我创建了小米红米 3s (294dpi) 的 avd,其规格为:
Android 中的广义密度为:
- Ldpi(低)~ 120 dpi -> dp = px * 0.74
- Mdpi(平均)~ 160 dpi -> dp = px * 1
- Hdpi(高)~ 240 dpi -> dp = px * 1.5
- Xhdpi (extraalta) ~ 320 dpi -> dp = px * 2
- Xxhdpi (extra extraalta) ~ 480 dpi -> dp = px * 3
- Xxxhdpi (extra extraalta) ~ 640 dpi -> dp = px * 4
当我创建带有设备规格的avd时,分配的密度是xhdpi(x2),但实际设备密度因子小于x2,与大多数设备一样,因此预览结果与设备屏幕的实际外观不匹配。比如Nexus 5x也是一样,资源密度是xxhdpi(x3),但实际密度是2.63
在 Android Studio 中,Nexus 5x 或 Pixel XL 等模拟设备分别指定了 420dpi 和 560dpi 的特殊密度,其中密度因子约为 2.6 (xxhdpi) 和 3.5 (xxxhdpi)。
要确定我使用的小米红米 3S 的宽度 dp 及其密度系数:
dpi/160 = 密度像素值 294/160 = 1,8375
我用https://stackoverflow.com/a/5104104/4114846计算了真实密度
结果是294dpi的密度,实际密度因子是1.83,但是系统分配的资源文件夹是xhdpi(x2),预览对应的是广义密度。
如何通过指定设备的密度或其密度因子来创建 avd 和预览,使其看起来像实际设备?
如果你不能用 android studio 指定,我们有什么替代方案?