Android status bar expects icons of size 25x25dp w

2019-01-13 06:25发布

问题:

According to android icon design guidelines (here, see table #1), developer needs to provide status bar icons of next sizes:

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

While my measurements show that status bar always has 25 dp in height and expects icons of 25x25dp. This translates to these sizes:

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

Here is how I get those size:

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

I have confirmed calculated sizes on several Android phones and on emulators.

The question basically is: why guidelines use sizes different from what is really used by status bar?

P.S. I actually need to break guidelines due to precise pixel control requirements. And I just was confused by this state of affairs. So explanation of why this the way it is would really help me.

回答1:

Warning: regardless of whether or not the answer was correct when written, it appears not to be correct now. See https://www.google.com/design/spec/style/icons.html for the current guidelines.

It just seems to be an error. (Note that as of 2010-12-04, they've also crossed their references to figures 4 and 5 on that page.)

As Lex points out, they have the correct number further down, in the "Status bar icon" section.

They also dictate a 2-pixel "safeframe" on all sides at 25x25 which the shape of your icon must fit within, though it seems that it is okay to have some aliasing-related stuff stick out, but only on the sides, for this type of icon. (Meaning that you really want to aim for 21x21 at that size.)



回答2:

Actually it's

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

it's 24dp size with a 2dp padding , means 20dp content

px = dp * (dpi/160)