2012-03-30 13 views
22

Ich habe die gleichen 9-Patch-Bilder in MDPI/HDPI/xhdpi. Gibt es einen bestimmten Grund, warum es nicht für die kleinste Größe gespeichert wird? Die dehnbaren Bereiche skalieren automatisch, wenn der Inhalt größer ist, beispielsweise ein Hintergrund als 9-Patch.Verschiedene 9-Patch-Bilder für unterschiedliche Dichten?

Beispiel Hintergrund:

MDPI: mdpi

hdpi: hdpi

xhdpi: xhdpi

Antwort

28

Viele neun Patches so klein sind, dass sie in der Regel nicht für unterschiedliche Bildschirmgrößen neu erstellt werden müssen.

In Ihrem Beispiel sind die Ecken des Hintergrunds nicht skaliert. Wenn Sie nur die gleichen Ecken für alle Auflösungen verwenden, hätten sie bei unterschiedlichen Auflösungen eine andere Größe. Bei kleineren Handys erscheinen die Ecken bei größeren Handys größer, die Ecken kleiner.

Ein anderes Beispiel wäre eine Linie. Wenn Sie eine Linie haben, die einen speziellen Effekt hat, und Sie erstellen es als neun Patch für MDPI-Bildschirme und die Zeile ist zwei Pixel hoch. Wenn Sie diesen Zeichensatz ohne Skalierung auf einem xhdpi-Bildschirm wiederverwenden, würde Ihre Zeile auf diesem Bildschirm zwei Pixel hoch werden. Da der Bildschirm jedoch kleinere Pixel hat (höhere Auflösung, gleiche Bildschirmgröße), würde die Linie dünner erscheinen.

Daher müssen Sie immer einen 9-Patch für jede Auflösung erstellen, oder wie @Shubhayu sagte nur neun hochauflösende Patches erzeugen und akzeptieren, dass sie verschwommen werden, wenn das System sie für andere Auflösungen skaliert.

+0

Jetzt verstehen. Grüße nach Bielefeld :-) – user949884

+0

Du kannst eine Antwort annehmen wenn es deine Frage gelöst hat :) – Janusz

+0

Ja du hast recht über das 2 Pixel hohe Beispiel. Allerdings hatte ich kein Problem mit herunterskalierten Bildern beobachtet. Es ist möglich, dass ich mich nicht mit Bildern beschäftigt habe, die den Unterschied zeigen würden. Danke für den Tipp :) Ich werde dies beim nächsten Mal beachten. – Shubhayu

6

Sie brauchen nicht zu unterschiedlich großen 9-Patch-Bilder in allen 3 zu setzen Ordner. Legen Sie einfach die mit der höchsten Auflösung in Ihren aufklappbaren Ordner. Android wird es für all Ihre unterschiedlichen Dichten aufnehmen.

Auch die Schärfe Ihres Bildes hängt von der Auflösung des Bildes ab. Wenn Sie die kleinste Größe speichern (dh mit der geringsten Auflösung), wird es bei Geräten mit hoher Dichte zu verschwommenen Dehnungen kommen. Dies ist nicht offensichtlich, wenn das Hintergrundbild einfarbig ist. Sie werden den Unterschied bemerken, wenn der Hintergrund einige Designs/wiederholbare Gradienten hat.

Bearbeiten: Seit ich diesen Artikel geschrieben habe, habe ich viel mehr Sachen über den 9-Patch entdeckt. 9-Patch-Bilder werden nicht verkleinert. Am besten wäre es, das kleinste Bild zu setzen. Und basierend darauf, wie es für andere Dichten aussieht, sollten Sie 9-Patch-Bilder für die betroffenen Dichten machen. Hier sind weitere Details über sie,

http://www.shubhayu.com/android/9-patch-image-designers-vs-developers

+0

Und es wird die Größe der Bilder von der höchsten Dichte auf die gewählte Dichte und von der Größe Bild auf es wird die neun Patch-Mechanismus, um die Bilder zu dehnen. Dies führt zu unscharfen Bildern und wird nicht empfohlen. – Janusz

+0

9-Patch-Scale-Down? Ich denke nur nach oben skalieren. – user949884

+0

Wenn Android ein Zeichen aus einem xhdpi-Ordner für ein mdpi-Telefon auswählt, verkleinert es das Bild, unabhängig davon, ob es sich um 9-Patch handelt oder nicht. Siehe meine Antwort für weitere Informationen. Ich hatte auch Schwierigkeiten, das zu lernen;) – Janusz

Verwandte Themen