我目前正在研究移动应用程序的线框图,而且有些东西似乎让我感到不安:在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
但一步一步的方式帮助我弄清楚幕后发生了什么.
kab*_*uko 12
您引用的确切陈述是:
平均而言,48dp转换为约9mm的物理尺寸
如果您从支持多屏幕文档中查看此图像:

你会看到有密度桶(ldpi,mdpi,hdpi,xhdpi).这些中的每一个都不是固定的密度,而是一系列密度,最终映射到用于各种密度计算的固定数字(分别为120,160,240,320).160很少是mdpi设备的每英寸实际像素数,它只是为简单起见而使用的抽象值.
你的计算是正确的,但你假设160ppi是平均密度(假设是mdpi设备),因为160dpi是mdpi的抽象值.显然不是,如果您引用的陈述确实如此.我怀疑有很多设备的平均值大约为200ppi,最终被归类为hdpi.那将是:(48dp/200ppi)*1.5*25.4 mm/in = 9.14400 mm.只是一个猜测,但我认为其根本原因是平均值不是160ppi.
更新:
这是来自设计网站的文档的另一个引用:
如果您将元素设计为至少48dp高和宽,则可以保证您的目标永远不会小于建议的最小目标尺寸7mm,无论它们显示在哪个屏幕上.
因此尺寸从> 7mm到至少9mm(假设9mm应该是平均值,我认为顶部应该<11mm).是的,48dp应该在所有屏幕上"大约"相同的大小,但是"大约"真正意味着什么并没有真正指定.你的7.62mm在范围内.它们的9mm值仅适用于"平均值",这是一个未指定的ppi.
| 归档时间: |
|
| 查看次数: |
19219 次 |
| 最近记录: |