Wenn Sie den Vector Asset-Assistenten in Android Studio 1.5.0 verwenden, wird jedes mit diesem Assistenten importierte Vektor-Zeichen-XML verwendet res/drawable/
.
Das build/
Verzeichnis und die resultierende APK zeigen jedoch, dass diese XML-Dateien in ein res/drawable-anydpi-v21/
Ressourcenverzeichnis verschoben werden . Der -v21
Teil ist sinnvoll, da er VectorDrawable
nur auf API Level 21+ unterstützt wird. Allerdings -anydpi
scheint nicht dokumentiert zu werden. Ich hätte erwartet -nodpi
, sowohl für das ursprüngliche Importziel als auch dafür, wohin das Build-System es verschieben möchte .
Hat jemand offizielle Aussagen darüber gesehen, was -anydpi
bedeutet und in welcher Beziehung es steht -nodpi
? Ich suche nach praktischen Effekten, nicht nur nach dem, was einige Codekommentare andeuten.
quelle
Antworten:
nodpi
Zum Beispiel:
Der Punkt erscheint auf xxhdpi klein, auf ldpi groß.
Der Ressourcenauflöser entspricht jedoch einem bestimmten Qualifikationsmerkmal, falls vorhanden.
Zum Beispiel
Auf einem HDPI-Gerät von Lollipop (API 21) wird die Bitmap verwendet.
Auf einem Lollipop (API 21) xhdpi-Gerät wird der Vektor verwendet.
anydpi
Zum Beispiel
Auf einem Lollipop (API 21) -Hdpi-Gerät wird der Vektor verwendet.
Auf einem Lollipop (API 21) xhdpi-Gerät wird der Vektor verwendet.
Referenz
Hinweis : anydpi wurde in Änderung Ic3288d0236fe0bff20bb1599aba2582c25b0db32 hinzugefügt .
quelle
drawable
. Das Verhalten des SDK kann sich geändert haben. Siehe VectorDrawable: Android lädt xhdpi PNGs anstelle der Vektorressourcedrawable
Ressourcenverzeichnis, genau wie beide Verzeichnisse, die ich in meinem Kopfgeld zitiert habedrawable
Ressourcenverzeichnisse sind.-xxhdpi
Gerät durchgeführt werden. Ich haberes/drawable-mdpi/nodpi_and_m.png
undres/drawable-nodpi/nodpi_and_m.xml
. Auf einem Nexus 5--xxhdpi
Gerät wird die Ressource verwendetres/drawable-nodpi/nodpi_and_m.xml
. Entsprechend Ihrem Algorithmus und meinen Erwartungenres/drawable-mdpi/nodpi_and_m.png
sollte verwendet werden. Das ist nicht was passiert.drawable-anydpi-v21
. Wenn Sie über die Support-Vector-Drawable-Bibliothek verfügen, können Sie diese indrawable-anydpi
oder einfach platzierendrawable
.Der Quellcode enthält die folgenden Kommentare (Zeile 639):
Hoffe, das beseitigt die Verwirrung.
quelle
-nodpi
Verzeichnissen werden mit Sicherheit basierend auf der Größe skaliert, je nachdem, welche Regeln für die Verwendung des Drawables gelten.nodpi
: Ressourcen für alle Dichten. Dies sind dichteunabhängige Ressourcen. Das System skaliert keine mit diesem Qualifikationsmerkmal gekennzeichneten Ressourcen, unabhängig von der aktuellen Bildschirmdichte.anydpi
: Dieses Qualifikationsmerkmal entspricht allen Bildschirmdichten und hat Vorrang vor anderen Qualifikationsmerkmalen. Dies ist nützlich für Vektorzeichnungen. In API Level 21 hinzugefügt.quelle
Ich benutze Drawable-Nodpi für alles, einschließlich vieler großer Grafiken für mein Spiel. Eine undokumentierte Folge der Vergrößerung Ihrer Grafiken ist, dass die Speichernutzung exponentiell erhöht wird. Wenn Sie also eine 1-MB-Grafik zum Zeichnen haben, wird sie je nach Auflösung des Benutzergeräts auf 4 MB, 16 MB oder 64 MB skaliert. Und die Geräteauflösungen steigen weiter. Diese Vergrößerung erhöht natürlich nicht die Schärfe der Grafik. Die Zeichenaktionen können festlegen, wie groß jede Grafik im Verhältnis zur Bildschirmgröße sein soll, ohne dass die App mit mehreren Zeichenordnern aufgebläht werden muss.
quelle