Android 状态栏需要 25x25dp 大小的图标,而指南建议使用 32x32dp。谁错了?

Posted

技术标签:

【中文标题】Android 状态栏需要 25x25dp 大小的图标,而指南建议使用 32x32dp。谁错了?【英文标题】:Android status bar expects icons of size 25x25dp while guidelines recommend 32x32dp. Who is wrong? 【发布时间】:2011-05-15 00:22:22 【问题描述】:

根据android图标设计指南(here,见表#1),开发者需要提供下一个尺寸的状态栏图标:

Status Bar  24 x 24 px (LDPI)  32 x 32 px (MDPI)  48 x 48 px (HDPI)

虽然我的测量结果显示状态栏的高度始终为 25 dp,并且需要 25x25dp 的图标。这转化为这些尺寸:

Status Bar  19 x 19 px (LDPI) 25 x 25 px (MDPI)  38 x 38 px (HDPI)

这是我获得这些尺寸的方法:

25dp * 0.75 = 18.75 => 19px (LDPI)
25dp *  1   = 25    => 25px (MDPI)
25dp *  1.5 = 37.5  => 38px (HDPI)

我已经在几款 Android 手机和模拟器上确认了计算尺寸。

问题基本上是:为什么指南使用的尺寸与状态栏实际使用的尺寸不同?

附:由于精确的像素控制要求,我实际上需要打破准则。我只是被这种事态弄糊涂了。所以解释为什么会这样对我真的很有帮助。

【问题讨论】:

不知道为什么文档是错误的。也许很久以前谷歌设计师决定将状态栏的高度降低 7 个像素之前是正确的。当然,SDK 的 android.jar 中的状态栏图标对于 MDPI 是 25px,对于 HDPI 是 38px,所以你的观察对我来说是 100% 正确的。 我认为这只是章节状态栏图标 (developer.android.com/guide/practices/ui_guidelines/…) 25x25 大小指定的复制/粘贴错误原因。 【参考方案1】:

其实是

18px(ldpi) 24px(mdpi) 36px(hdpi) 48px(xhdpi) 72px(xxhdpi) 96px(xxxhdpi)

它是 24dp 大小,带有 2dp 填充,表示 20dp 内容

px = dp * (dpi/160)

【讨论】:

xxhdpi 应该是 72x72 24dp 减去 2dp 内边距实际上是 20dp(内边距适用于所有边)。 和 xxxhdpi 在 96x96px 和 xxxxhdpi 在我希望他们不要因为营销原因继续制造具有愚蠢的高分辨率的设备 你从哪里得到这些数字?【参考方案2】:

警告:无论写出的答案是否正确,现在看来都不正确。有关当前指南,请参阅 https://www.google.com/design/spec/style/icons.html。

这似乎是一个错误。 (请注意,截至 2010-12-04,他们还交叉引用了该页面上的图 4 和图 5。)

正如 Lex 指出的那样,他们在"Status bar icon" section 的下方有正确的数字。

他们还规定了一个 25x25 大小的 2 像素“安全框”,您的图标的形状必须适合该框,虽然看起来可以突出一些与锯齿相关的东西,但 只有侧面,用于此类图标。 (这意味着你真的想在那个尺寸下瞄准 21x21。)

【讨论】:

请注意,Android 网站上提到的 dp 单位不是像素。有关 dp 如何转换为像素的详细信息,请参阅developer.android.com/design/style/iconography.html。所以 24x24 dp 总是 24x24 像素,在这个答案中应该提到 dp 而不是像素。 Android 网站已更新,不再引用 24dp 图标的像素尺寸,如果您在此处查找确切的导出值。您可以使用pixplicity.com/dp-px-converter 之类的网络工具为您计算它们,或者查看下面的答案。

以上是关于Android 状态栏需要 25x25dp 大小的图标,而指南建议使用 32x32dp。谁错了?的主要内容,如果未能解决你的问题,请参考以下文章

IOS自动布局缩小

场景编辑器:没有@2x 无法指定纹理名称

如何保存从python中的图像转换的数组? [复制]

BugKu:0和1的故事(writeup)

UITabBarController 图像太小 [重复]

Android 8.0 隐藏状态栏和导航栏