我目前正在研究移动应用程序的线框图,而且有些东西似乎让我感到不安:在Android设计指南中,它们说明了以下内容:
平均而言,48dp转化为约9mm的物理尺寸(具有一些可变性).
但是,根据Android Developpers Dev Guide,他们dp使用以下公式计算:
与密度无关的像素相当于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来计算.所以:
现在的诀窍是实际设备密度为200.因此像素将显得比240dpi屏幕更大.要获得200dpi设备的物理尺寸,我们必须获得两种分辨率之间的差异并将其应用到0.3英寸:
我知道这与@kabuko所说的完全相同:
(48dp/200ppi)*1.5*25.4 mm/in = 9.14400
但一步一步的方式帮助我弄清楚幕后发生了什么.