Kontext: Ich entwickle eine Android-Anwendung für Tablets (Landschaft) mit Bildressourcen, die eine Auflösung von 1920x1200 hat. Diese Auflösung passt auf die folgenden Bildschirmgrößen und -dichten:
%Vor%Problem: Wenn ich alle meine Bildressourcen in diese beiden Ordner dupliziere, wird die endgültige Größe des APK unnötig schwer sein
Mein erfolgloser Ansatz: Ich habe versucht, Alias für diese Zeichen wie hier definiert zu verwenden: Ссылка
Ich habe meine Bildquelle in:
%Vor%und die zwei Alias innerhalb der entsprechenden Bildschirmgrößen und Dichte Ordner:
%Vor%image.xml:
%Vor%Wenn ich mein Bild in einer Layoutdatei verwende, referenziere ich natürlich den Alias:
%Vor%Aber leider ändert Android die Ressource für mein Testtablett (mdpi) nicht richtig und das Ergebnis ist, dass ich größere Bilder habe.
Ich habe versucht, die ursprünglichen PNGs zu res / drawable zu verschieben, sogar zu res / rohe , aber das Ergebnis ist dasselbe wie res / drawable-nodpi .
Wenn ich diese PNGs auf res / drawable-xlarge-hdpi (gleiches von xml alias) verschiebe, ist das Ergebnis korrekt, aber natürlich löst das mein Problem nicht, weil ich es auch kopieren müsste res / drawable-large-xhdpi und apk-Größe erhöht sich.
Weiß jemand, wie man das erreicht?
Ich versuche, wrap_content in ImageViews zu vermeiden, da die Größe der Bilder auf den verschiedenen Plattformversionen unterschiedlich ist. Wenn Sie eine explizite Breite und Höhe in dp eingeben, spielt es keine Rolle, welches Bild ausgewählt wird.
In Ihrem Fall hätte ich ein einzelnes Bild in drawable / xhdpi. Geben Sie die Breite und Höhe in der Layoutdatei in dp an. Für ein 1920x1200px Bild wäre das Layout_width="960dp" layout_height="600dp"
Das Bild hat ungefähr die gleiche physische Größe auf x-großen Tablets wie große Tablets.
Wenn Sie möchten, dass das Bild auf X-Large-Tablets größer wird, fügen Sie eine zweite Layoutdatei hinzu, in der die Breite und Höhe der Bilder erhöht werden, aber dieselben Bilder beibehalten werden.
Alternativ können Sie Dimensionsressourcen verwenden, die sich zwischen Groß und Groß X unterscheiden.
Ich kann zwei Lösungen für dieses Problem vorschlagen:
Erster:
ImageView
im Code. Zweite (es ist hässlich, aber sehr schnell):
Komprimieren Sie einfach Ihre PNG-Bilder mit tinypng.com . Es kann Ihre Bilder um 70-80% verbessern, ohne die Qualität zu beeinträchtigen (für mobile Geräte).
Wie wäre es damit:
res/drawable-nodpi
res/layout-xlarge
, res/layout-large
, res/layout
einfügen
ImageView
verwenden, verwenden Sie nicht match_parent
oder wrap_content
, sondern verwenden Sie stattdessen die berechnete Größe in dp. Das sollte funktionieren, aber der Nachteil ist, dass es nicht Vorskalierung , was bedeutet, dass bei niedrigeren dpi-Geräten mehr Speicher belegt wird.
Wenn Sie die gleichen Bilder für alle Geräte verwenden möchten, müssen Sie 9-Patch Images verwenden.
Hier finden Sie den offiziellen Artikel von Android hier klicken
Vorher:
Nachher:
Verweisen Sie hier: Anleitung zum Herunterladen von Android 9-Patches
Ich hoffe, es hilft.
Wenn Sie das gleiche Bild für alle Geräte verwenden möchten, dann sollten Sie 9 Patch Image verwenden, wobei jedes Layout ein Gewicht-Tag im linearen Layout in Android enthält. Ich denke, es ist Arbeit 100%. Ich bin mir sicher. weil ich diese Methode für universelle Anwendung verwende (bedeutet Tablet und Geräteanwendung)
Okay, ich habe dein Problem.Ich habe mein Wort zu diesem Problem
Es gibt zwei Wege und ich empfehle beide.
Erster Weg (bequemer im Zusammenhang mit Ihrem aktuellen Problem.)
Laden Sie mehrere APKs hoch, wenn die Größe größer wird.
Folgen Sie dem offiziellen Leitfaden .
Zweiter Weg Ich bevorzuge es, diesen Weg zu gehen.
Erstellen Sie mehrere Layouts. wie unten
res / Layout /main_activity.xml --- & gt; # Für Mobilteile (kleiner als 600dp verfügbare Breite)
res / layout-sw600dp /main_activity.xml - & gt; # Für 7 "-Tablets (600 dpi breit und größer)
res / layout-sw720dp /main_activity.xml # Für 10 "-Tablets (720 dpi breit und größer)
Ich empfehle dringend, jedes Wort von dieses offizielle Dokument von Google zu lesen.
Danke.
Tags und Links android android-drawable android-bitmap alias xml-drawable