2

Ich habe eine Listenansicht, wo ich Bild mit Personennamen laden. In der Listenansicht befinden sich ungefähr 538 Elemente. Ich bekomme die Bilder von Personen von einer URL. Zur Zeit mache ich folgendes: -Große Bilder laden mit Picasso

Picasso.with(getContext()).load(url).resize(70,70).onlyScaleDown().into(im1);

Die Bilder, die in der URL sind sehr groß und das Laden von einigen Bildern braucht viel Zeit, und es frisst mein Gedächtnis auch beim Laden auf. Kann mir bitte jemand helfen, die Bilder effizient und schnell zu laden.

Beispiel für eine Person kann in der folgenden URL zu finden: -

https://theunitedstates.io/images/congress/original/D000626.jpg

Antwort

4

Sie onlyScaleDown() verwenden können

Picasso 
    .with(context) 
    .load(imageUrl) 
    .resize(6000, 2000) 
    .onlyScaleDown() // the image will only be resized if it's bigger than 6000x2000 pixels. 
    .into(imageViewResizeScaleDown); 

, um die Größe Oder Sie verwenden fit()

Picasso 
    .with(context) 
    .load(imageUrl) 
    .fit() 
    // call .centerInside() or .centerCrop() to avoid a stretched image 
    .into(imageViewFit); 

passen() ist measu Rufen Sie die Dimensionen des Ziel-ImageView auf und verwenden Sie resize() intern, um die Bildgröße auf die Dimensionen von ImageView zu reduzieren. Es gibt zwei Dinge über fit() zu wissen. Erstens kann der Aufruf von fit() die Bildanforderung verzögern, da Picasso warten muss, bis die Größe des ImageView gemessen werden kann. Zweitens können Sie nur fit() mit einem ImageView als Ziel verwenden (wir werden später auf andere Ziele schauen).

Der Vorteil ist, dass das Bild die niedrigste mögliche Auflösung hat, ohne seine Qualität zu beeinträchtigen. Eine niedrigere Auflösung bedeutet, dass weniger Daten im Cache gespeichert werden müssen. Dies kann die Auswirkung von Bildern auf den Speicherbedarf Ihrer App erheblich reduzieren. Zusammenfassend kann man sagen, dass fit() ein großartiges Tool ist, wenn Sie einen geringeren Speicherverbrauch gegenüber etwas schnelleren Ladezeiten bevorzugen.

+0

sollten Sie '' .centerInside() '' hinzufügen, ansonsten wird das Bild auf die von Ihnen angegebene Größe angepasst. –