Android-Farb-Formate (RGB565, ARGB8888)
getHolder().setFormat(PixelFormat.RGBA_888);
Options options = new BitmapFactory.Options();
options.inDither=true;
options.inScaled = true;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inPurgeable=true;
(Bitmat erstellt mit Hilfe der Optionen oben)
Wenn mit dem obigen code erhalte ich die folgenden Ergebnisse.........
- Keine Farbe Streifenbildung auf meinem Tablet-Gerät
-
Bemerkbar, Farbe Streifenbildung auf dem Testfeld Handy (Samsung Galaxy Ace)
getHolder().setFormat(PixelFormat.RGBA_888); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.ARGB_565; options.inPurgeable=true;
-
Kein colour banding auf meinem tablet
- Noticible Farbe Streifenbildung auf dem Galaxy Ace
-
Gleichen Ergebnisse wie oben
getHolder().setFormat(PixelFormat.RGB_565); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable=true;
-
Farbe Streifenbildung auf meinem tablet
-
Farbe Streifenbildung auf dem SG Ace
getHolder().setFormat(PixelFormat.RGB_565); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inPurgeable=true;
-
Farbe Streifenbildung auf meinem tablet
- Farbe Streifenbildung auf dem SG Ace
So, zum Schluss, nur das PixelFormat.xxxx Teil scheint keinen Unterschied machen. Mein Verständnis ist, dass dies ist, um die Halter-Farbe-format. Dies hat Auswirkungen auf alles gezogen. (also, alles, was mit diesem format).
Könnte mir jemand erklären, was der Zweck der folgenden Zeile bitte?
Optionen.inPreferredConfig = Bitmap.Config.xxxxxxx
Dieses scheint nicht, haben keine Auswirkung auf die bitmap gezeichnet worden ist.
Leistung im Vordergrund steht, so kann ich meine ursprüngliche png-Dateien, so dass Sie nicht haben, Verläufe, (dh, an Sie zu zeichnen als RGB565 - ist dies ratsam, oder sollte ich stick mit 8888?) oder sollte dithering beheben? (weil, wie Sie sehen können, ich habe es aktiviert, aber es scheint nicht zu helfen).
Irgendwelche Ideen, warum das banding ist immer auf dem Ace? Könnte es sein, eine Beschränkung der hardware?
Dank ist dies alles sehr verwirrend.
(PS ich habe gelesen, das offizielle Handbuch, schau ich immer an, dass Sie vor der Buchung eine Frage zu SO als auch als auf der Suche nach anderen verwandten SO Fragen, aber die offizielle Anleitung (wie es allzu oft der Fall ist), nicht klar für mich und ich konnte nicht die Antworten finden, die über andere Fragen, also entschuldigt, wenn es hier auch schon).
InformationsquelleAutor Zippy | 2013-03-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
565-format ist Standard, da kann es gezeichnet werden, die schneller und erfordert weniger Rechenleistung. Da für den SG Ace, ich glaube, dass eine Weile zurück, nur von bestimmten Android-Versionen unterstützt die 8888 Farbe.
Dir eine von meinen app-Hintergründe, um nicht die band, ich hatte Folgendes zu tun:
1 - hintergrund Hinzufügen, um drawable Ordner
2 - Erstellen background_dithered.xml mit folgendem Inhalt:
3 - in-Aktivität-code:
Ich bin mir nicht sicher, wie ich nur, dass dies eine statische png-aber Sie könnten versuchen, tun das set-format auf onAttachedToWindow überschreiben
Ziemlich sicher ARGB_8888 ist der Standard jetzt.
InformationsquelleAutor Srdjan Grubor
Verschiedenen
Bitmap
Konfigurationen haben unterschiedliche Speicher-footprints.RGB_565
ist ein 16-bit-Farbe-format.ARGB_8888
ist ein 32-bit-format.Unabhängig davon, welche
getHolder().setFormat();
Konfiguration, die Sie gewählt haben, bzw. wie Sie gezeichnet wird, einARGB_8888
Bitmap wird wesentlich größer (in der Erinnerung) als Bitmap inRGB_565
format.InformationsquelleAutor Tyler MacDonell