18

我目前正在为移动应用程序制作线框,但我似乎忘记了一些事情:在Android Design Guidelines中,他们陈述了以下内容:

平均而言,48dp 转换为大约 9mm 的物理尺寸(有一些可变性)。

但是,根据Android Developers Dev Guide,他们dp使用以下公式计算 a:

与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统会根据使用中屏幕的实际密度,根据需要透明地处理 dp 单位的任何缩放。dp 单位到屏幕像素的转换很简单:px = dp * (dpi / 160)。例如,在 240 dpi 的屏幕上,1 dp 等于 1.5 个物理像素。在定义应用程序的 UI 时,您应该始终使用 dp 单位,以确保您的 UI 在不同密度的屏幕上正确显示。

因此,为了简单起见,我以 160dpi 进行设计,因此我的图形具有符合推荐标准的正确尺寸。打印时,我将文档缩小 2.22(160dpi/72dpi),因此打印结果给出了纸上的实际物理尺寸。

我希望我的按钮高 48dp。但是,如果我按照我阅读的所有内容进行数学计算,通过将 48 指定为我的按钮高度,我离 9mm 尺寸还很远。

48dp / 160dpi = 0.3 英寸,所以 7.62 毫米...

我显然错过了什么/做错了什么?那个 9mm 是从哪里来的?

谢谢!

更新

以下是帮助我理解我在接受的答案中遗漏的内容。

以 200 的屏幕密度为例。Android 将使用 240 来进行计算。所以:

  • 240dpi / 160dpi = 1,5 比例
  • 48dp * 1,5 比例 = 78 个物理像素
  • 78 px / 240dpi = 0,3 英寸(与 48dp / 160dpi 完全相同)

现在的诀窍是实际的设备密度是 200。所以像素会显得比 240dpi 屏幕上的要大。要获得 200dpi 设备上的物理尺寸,我们必须获得两种分辨率之间的差异并将其应用于 0,3 英寸:

  • 240dpi / 200dpi = 1,2
  • 0,3 英寸 * 1,2 的差异 = 0,36 英寸,即 9,144 毫米

我知道这与@kabuko 所说的完全相同:

(48dp / 200ppi) * 1.5 * 25.4 毫米/英寸 = 9.14400

但一步一步的帮助我弄清楚引擎盖下发生了什么。

4

2 回答 2

12

您引用的确切声明是:

平均而言,48dp 转换为大约 9 毫米的物理尺寸

如果您从Supporting Multiple Screens 文档中查看此图像:

Android 密度

您会看到有密度桶(ldpi、mdpi、hdpi、xhdpi)。这些中的每一个都不是固定的密度,而是一系列密度,最终映射到用于各种密度计算的固定数字(分别为 120、160、240、320)。160 很少是 mdpi 设备的实际每英寸像素数,它只是为了简单起见而使用的抽象值。

您的计算是正确的,但您假设 160ppi 是平均密度(假设 mdpi 设备),因为 160dpi 是 mdpi 的抽象值。显然不是,如果您引用的陈述确实是真的。我怀疑有很多设备的平均分辨率约为 200ppi,最终被归类为 hdpi。那将是:(48dp / 200ppi) * 1.5 * 25.4 毫米/英寸 = 9.14400 毫米。只是一个猜测,但我当然认为根本原因是平均值不是 160ppi。

更新:

这是设计网站文档中的另一句话:

如果您将元素设计为至少 48dp 高和宽,则可以保证 [...] 您的目标永远不会小于建议的最小目标尺寸 7mm,无论它们显示在什么屏幕上。

所以尺寸从 > 7 毫米到至少 9 毫米不等(假设 9 毫米应该是平均的,我认为顶部范围应该 < 11 毫米)。是的,48dp 在所有屏幕上应该是“大约”相同的尺寸,但是“大约”的真正含义并没有真正指定。您的 7.62 毫米在范围内。它们的 9mm 值仅用于未指定 ppi 的“平均值”。

于 2012-04-11T21:00:03.370 回答
1

如果严格说 Android 手机和平板电脑(没有电视、没有 Wear、没有台式机、没有 iOS):根据 google 的设备列表https://design.google.com/devices/ 48dp 到 9mm 的建议与实际不符世界价值观似乎

我需要找到要使用的最低 DP 值,它可以在任何地方安全地以或高于给定物理尺寸进行渲染。原来有些设备配置不当(Sony Experia C4 是这个列表中最差的,为 200 dp/in,其次是 Dell Venue 8,为 180dp/in,然后是 LG G3,为 178dp/in)(这里说的是逻辑 DP,而不是物理DPI)。在这些设备中,一切看起来都比平均水平要小。其他一切都接近 170..144 dp/in。

如果可以在其他地方找到此信息以支持数据并且还拥有更多设备,那么如果我们看到那里有更多的流氓设备,那就太好了。

这是我从页面中提取的一些数字:(仅限安卓手机和平板电脑)

Max: 200 dp/in  (smallest)
Min: 141 dp/in  (biggest)

有了这些数字,这里有一个表格,其中列出了可供选择的各种离散 dp 值的最小/最大 mm 尺寸(四舍五入到最接近的 1/10 mm):

dp  min  max mm
36  4.6   6.5
37  4.7   6.7
38  4.8   6.8
39  5.0   7.0
40  5.1   7.2
41  5.2   7.4
42  5.3   7.6
43  5.5   7.7
44  5.6   7.9
45  5.7   8.1
46  5.8   8.3
47  6.0   8.5
48  6.1   8.6
49  6.2   8.8
50  6.4   9.0
51  6.5   9.2
52  6.6   9.4
53  6.7   9.5
54  6.9   9.7
55  7.0   9.9
56  7.1  10.1
57  7.2  10.3
58  7.4  10.4
59  7.5  10.6

公式

mm = <dp> * 25.4 / <dp/in> 我可以在此设备列表中找到<dp/in>的最大密度 dp/in (200) 或低密度 (141) 在哪里。

例子

48dp * 25.4 / 200 = 6.096mm

四舍五入:6.1 毫米——低于他们声称的“安全”7 毫米。

另请注意,在任何手机/平板电脑屏幕上,48dp 从未完全达到“9mm”。最大值为 8.6(接近但肯定不是平均值)。

于 2016-03-12T21:11:29.573 回答