Android-Symbole (und andere Elemente der Benutzeroberfläche, z. B. Ziehlängen) werden in gemessen dp
. A dp
ist ein geräte- / dichteunabhängiges Pixel . 1 dp
entspricht 1 px auf einem 160-dpi-Bildschirm . Um jedoch in andere Bildschirmdichten zu konvertieren, müssen Sie diese mit einem Dichtefaktor multiplizieren. Daher wird allgemein empfohlen, für die meisten Symbole mehrere Bilder bereitzustellen .
Beispielsweise werden die in der Statusleiste verwendeten Benachrichtigungssymbole als 24 x 24 dp mit einem Rand von 1 dp angegeben (sodass das tatsächliche Symbol nur ein optisches Quadrat von 22 x 22 dp einnimmt, obwohl ein Teil des AA in diesen 1 dp-Rand / Safeframe übergehen kann ). Um 24 dp in tatsächliche Pixelgrößen umzuwandeln, werden diese groben Berechnungen verwendet:
display density dp units * scale = px units
ldpi ~120 dpi 24x24 dp * .75 = 18x18 px
mdpi ~160 dpi 24x24 dp * 1.0 = 24x24 px
hdpi ~240 dpi 24x24 dp * 1.5 = 36x36 px
xhdpi ~320 dpi 24x24 dp * 2.0 = 48x48 px
xxhdpi ~480 dpi 24x24 dp * 3.0 = 72x72 px
Es gibt auch eine mittlere Anzeigedichte namens tvdpi
(~ 213 dpi), die zwischen mdpi
und liegt hdpi
und einen Skalierungsfaktor von hat 1.33
, aber dies ist viel seltener. In den Android-Dokumenten wird empfohlen, ein 3:4:6:8:12
Skalierungsverhältnis einzuhalten, wenn Sie vorskalierte Bitmap-Bilder (normalerweise PNGs) für die gängigsten Anzeigedichten bereitstellen.
Ich sehe nirgendwo, wo sie die dp-Größe für die großen Symbole angeben, die in Benachrichtigungen verwendet werden, aber die Höhe jeder Benachrichtigung in der normalen Posteingangsansicht beträgt 64 dp . Das bedeutet, dass die maximale Größe für die dort gezeigten Symbole / Bilder wie folgt lautet:
ldpi: 48x48 px
mdpi: 64x64 px
hdpi: 96x96 px
xhdpi: 128x128 px
xxhpdi: 192x192 px
Wenn Sie genau wissen möchten, welche Bildgrößen die Stock-Symbole von Android haben, sollten Sie dies im Android Icon Templates Pack, v4.0, herausfinden können .
Siehe auch diese SO-Frage: Honeycomb-Benachrichtigungen: Wie stelle ich largeIcon
die richtige Größe ein?