如何为相同的 DPI 存储桶设备创建自定义尺寸文件?

问题描述

我正在编写一个 Android 游戏并同时在两台设备上进行测试:

  • 华为 P10 Lite:5.2"、1920x1080、424dpi、xhdpi。
  • 华为 P40 Pro: 6.58"、2640x1200、441dpi、xhdpi。

这两种设备完全不同,因为它们屏幕尺寸和分辨率不同,但在 dpi 和 dpi bucket 上没有区别; 两者都是 xhdpi

这意味着无论我创建的 dimen 文件(dimen-mdpi、dimen-hdpi...),任何图形元素在两部手机中看起来都一样,这完全打破了小手机的布局和比例强>.

我以此作为桶分类的参考:

enter image description here

解决方法

好吧,dpi 与分辨率有关,而不是屏幕尺寸。如果您想为屏幕尺寸而不是屏幕分辨率创建资源,则应使用 smalest width qualifiers

根据文档:

一个 DIP 是一个像素 大约 160 dpi 的屏幕(例如 240x320、1.5"x2" 的屏幕), 提供系统显示的基线。因此在 160dpi 的屏幕上 此密度值为 1;在 120 dpi 的屏幕上,它将是 0.75;等

因此,如果我理解正确,您可以通过以下方式从像素转换为 =AND(ISNUMBER(RIGHT(A1,6)*1),CODE(A1)>64,CODE(A1)<91,SWITCH(LEN(A1),7,1,8,AND(CODE(MID(A1,2,1))>64,CODE(MID(A1,1))<91),0)) dp。在这种情况下,以 dp 为单位的设备宽度公式如下:pixelSize / dip / 160.

  • 以 dp 为单位的 P10 宽度:1080 / (424 / 160) = 407.54
  • 以 dp 为单位的 P40 宽度:1200 / (441 / 160) = 435.37

看来其他人也来过这个conclusion