为什么标准物理长度单位如 mm 不用于触摸 UI 布局?

Mat*_*nen 3 android touch ui-design

如果您要布置交互式触摸 UI 元素,例如按钮,您需要具有合理物理尺寸的东西,以便用户可以舒适地点击它。这样,布局一个触摸 UI 就像布局电子设备上的物理按钮和旋钮一样。对于这种物理工程,毫米(或英寸)是首选单位。

出于某种原因,这在触摸 UI 设计中似乎并非如此。我不认为自己在这个主题上读得非常好,但老实说,我从未见过有人使用 mm 作为单位,例如,Android 布局文件。但是我已经看到了关于“px”与“dp”与“sp”以及谁知道什么的无休止的争论。

“与设备无关的像素”(在 Android 上根据物理长度定义的- 1dp ? 0.16mm)似乎是一种非常复杂的指定长度的方式。

为什么不只使用毫米?

设备不正确支持这些单元是否有问题?它是一种文化事物(程序员可能更习惯于以“某种像素”而不是物理单位进行思考)?这是怎么回事?

Yon*_*lan 6

通常,您会发现移动可用性人员在谈论毫米。但是程序员和视觉设计师谈论与密度无关的像素或点(1 个 Android“DIP”=1 个 iOS“点”),因为即使您可以精确地指定以毫米为单位的度量,最终也会出现舍入问题或半像素抗锯齿丑陋:

1mm 等于 6.3 DIP(精确度取决于屏幕的确切 DPI 值,因为倾角被量化到最接近的 120/160/240/320/480/640 dpi)。这意味着在标准的 G1 样式 160DIP 屏幕上,如果您将按钮指定为(假设)8 毫米,那么该屏幕上的像素将为 50.4 像素 - 祝您好运以任何程度的精度渲染,或者告诉 Photoshop 结束一行正好 50.4 像素。只是四舍五入并不是一个很好的解决方案;屏幕仍然是固定的总宽度(以像素为单位),如果您(比方说)布置具有特定大小和填充量的按钮网格,那么这些舍入误差会以破坏对称的方式复合。

将其指定为(假设)48DIP 会好得多,因为它可以平滑缩放:160DPI 时为 48px,HDPI (240) 时为 72px,320DPI 时为 96px(在 iOS 术语中也称为 2x),不需要分数像素渲染或舍入。

至于为什么 160DPI 像素作为密度无关像素的 1x 移动测量单位而胜出,这要归咎于前几款 iPhone 和共享该配置的 HTC G1。