2016-07-05 8 views
1

Ich verwende das Plugin "Icon Pack Drawable Importer", von dem ich denke, dass es wahrscheinlich die Icons von "https://design.google.com/icons" importiert. Jedes Icon hat viele Größen (18dp, 24, 36, 48 ...) und für jede Größe gibt es mehrere DPIs (mdpi ~ xxxhdpi).Muss ich verschiedene Größen derselben Zeichen hinzufügen, obwohl jede von ihnen mehrere DPI-Versionen hat?

Dies ist ein wenig verwirrend, da, so weit ich weiß unter Windows, Sie einfach mehrere Auflösungen des gleichen Symbols definieren, und das System wählt automatisch die Version mit der besten Auflösung für die tatsächliche Zeichnungsgröße.

Angenommen, ich möchte zwei Pfeile in zwei verschiedenen Größen auf demselben Gerät anzeigen. Angenommen, ich habe nur ein Pfeilsymbol hinzugefügt, dessen Größe 48 dpi ist, aber 5 verschiedene DPI-Versionen enthält. Wenn ich programmgesteuert die endgültige Zeichengröße angegeben habe, wählt Android dann die nächste aus? Zum Beispiel, mdpi Version für den kleinen Pfeil und die xxxhdpi Version für den großen Pfeil? Oder wählt Android eine Version aus, die der DPI des Systems entspricht und die Größe ändert und sie für die beiden Pfeile verwendet?

Ich möchte Benutzer die Symbolgröße für sie wählen lassen (einige mögen groß, einige vielleicht klein), aber das Hinzufügen mehrerer Größenversionen eines Symbols, das selbst DPI-Versionen hat, scheint ein wenig komplex. Also dachte ich daran, die größte Größe nur hinzuzufügen (48dp Version, aber es hat 5 DPI-Versionen) und programmgesteuert eine kleinere Auflösung anzugeben, wenn der Benutzer ein kleineres Symbol haben möchte, da Upscaling ein Icon unscharf machen würde, aber Downscaling nicht. Ist das eine schlechte Idee, und sollte ich den Ressourcen mehrere Größen und mehrere DPIs desselben Symbols hinzufügen?

Antwort

1

Wenn Ihr Bildschirm mdpi ist, werden alle Ihre Zeichen zuerst aus dem Verzeichnis res/drawable-mdpi geladen und dann, wenn die Datei nicht gefunden wird, aus dem Verzeichnis res/drawable. Wenn Sie also das 24x24 mdpi-Symbol programmgesteuert auf 64x64 Pixel skalieren, erhalten Sie eine verschlechterte Bildqualität, Android lädt stattdessen kein xxdpi-Symbol für Sie.

Wenn Sie alle Ihre Symbolgrößen auf programmatische Weise festlegen, wählen Sie einfach die Symbole mit der höchsten Auflösung aus und speichern Sie sie alle im Verzeichnis res/drawable.

Symbole in res/drawable-mdpi haben immer noch den Vorteil, dass sie weniger Speicher benötigen und nicht mipmapped sein müssen. Moderne Telefone können jedoch alle Grafiken mit Glättung und Mipmapping in Hardware skalieren.