Android最小按钮高度:48dp = 9mm?

时间:2012-04-11 19:40:13

标签: android mobile

我目前正在研究移动应用程序的线框图,而且有些东西似乎让我感到不安:在Android Design Guidelines中,他们声明了以下内容:

  

平均而言,48dp转化为约9mm的物理尺寸(有些   变异)。

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

  

与密度无关的像素相当于a上的一个物理像素   160 dpi屏幕,这是系统假定的基线密度   用于“中等”密度屏幕。在运行时,系统透明   根据实际情况,根据需要处理dp单位的任何缩放   使用中的屏幕密度。将dp单位转换为屏幕   像素很简单:px = dp *(dpi / 160)。例如,240 dpi   屏幕,1 dp等于1.5个物理像素。你应该总是使用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 in * 1,2差异= 0,36,其中9,144mm

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

  

(48dp / 200ppi)* 1.5 * 25.4 mm / in = 9.14400

但是一步一步的帮助我弄清楚幕后发生了什么。

2 个答案:

答案 0 :(得分:11)

您引用的确切陈述是:

  

平均而言,48dp转化为物理尺寸约为9mm

如果您从Supporting Multiple Screens doc

查看此图片

Android Densities

你会看到有密度桶(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,无论它们显示在哪个屏幕上。

因此尺寸与&gt;不同7毫米到至少9毫米(给定9毫米应该是平均值,我认为顶部范围应<11毫米)。是的,48dp应该在所有屏幕上“大约”相同的大小,但是“大约”真正意味着什么并没有真正指定。你的7.62mm在范围内。它们的9mm值仅用于“平均值”,这是一个未指定的ppi。

答案 1 :(得分:0)

如果说严格关于Android手机和平板电脑(没有电视,没有磨损,没有桌面,没有iOS): 根据谷歌的设备列表https://design.google.com/devices/,48dp到9mm的建议的真实世界值并不匹配。

我需要找到要使用的最低DP值,它将在任何地方安全地渲染到或高于给定的物理尺寸。事实证明一些设备只是严重配置(索尼Experia C4是这个列表中最差的200 dp / in,其次是戴尔Venue 8在180dp / in,然后LG G3在178dp / in) (这里谈论逻辑DP而不是物理DPI)。在这些设备中,一切都会看起来比平均水平要小。其他一切都接近170..144 dp / in。

如果可以在其他地方找到此信息以同意数据并且还有更多设备,那么如果我们看到有更多的流氓设备,那将会很好。

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

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(接近但肯定不是平均值)。