2016-08-20 1 views
0

Ich schreibe eine Android App, die Codezeile B viele Male aufruft.Android: Caching Bilder für imageView

Daher würde ich gerne aus Performance-Gründen das Image 'image123' zwischenspeichern/die App schneller machen und nur einmal laden und dann einfach aus dem Cache anzeigen lassen.

Gibt es einen Weg dies zu erreichen, ohne es immer wieder zu laden? Weiss es jemand ?

Ist es wichtig, invalidate() (Codeline C) aufzurufen, nur um sicher zu sein, dass das Bild immer sofort angezeigt wird? Wie kann ich herausfinden, wann das Bild genau in der Bildansicht angezeigt wird?

Vielen Dank für Ihre Hilfe im Voraus.

// codeline A 
ImageView imageView = (ImageView) this.findViewById(R.id.imageView); 
// codeline B 
imageView.setImageResource(R.mipmap.image123); 
// codeline C 
imageView.invalidate(); 
+0

Sie können eine SVG-Bilddatei für eine solche Verwendung verwenden. Svg's werden geladen, wenn sie zum ersten Mal verwendet werden und dann jedes Mal mit diesem Cache verwendet werden. –

+0

Danke Code-Crusher für Ihre Hilfe. Gibt es ein Tutorial oder ein Beispiel für die Verwendung von SVG-Bildern? – MBot

+0

konvertieren Sie einfach Ihre Bilder in Vektorbilder. Dies sind XML-Dateien. Legen Sie sie in den Ordner _drawable_. Wenden Sie sie einfach wie bei .png-Dateien an (@ drawable/my_svg) :) –

Antwort

0

Gibt es eine Möglichkeit, dies zu erreichen, ohne es wieder und wieder geladen?

Es gibt eine offizielle Anleitung dafür: https://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

Ist es wichtig, invalidate() (Kodierzeilen C) zu nennen, nur um sicherzustellen, dass das Bild immer sofort angezeigt wird?

Nein, nur das Setzen einer neuen Bildressource führt automatisch zu einem Redraw.

Wie kann ich herausfinden, wann das Bild in der Bildansicht genau angezeigt wird?

Verwenden Sie View.post, um den Code auszuführen, sobald die Zeichnung fertig ist.

+0

Danke F43nd1r für Ihre Antwort. Gibt es eine einfachere Möglichkeit, ein Bild in einem Drawable zu speichern, zum Beispiel beim Starten der App und dann einfach jedes Mal aus dem Cache anzuzeigen oder muss ich alle Schritte aus dem Cache-Bitmap-Tutorial folgen? Wie kann ich die Post-Methode von View genau verwenden? – MBot

+0

Ein einfacherer Weg besteht darin, Bitmaps nicht selbst zu cachen, was normalerweise der Fall ist. Sie sollten view.post mit einem Runnable aufrufen, der nach der Anzeige des Bildes alles macht, was Sie tun möchten. – F43nd1r