Ich habe ListView mit Text und großes Bild aus dem Internet. Mein Bild Item hat Passbreite und wrap_content
Höhe.
Ich versuchte, Bild im Hintergrund mit UIL
& Picasso
anzuzeigen. Beide können arbeiten, aber das Bild immer neu geladen, wenn ich Scrollen zu stoppen, und es macht Listview-Flimmern
Es sieht wie folgt aus:
UIL, Picasso - Bilder im Adapter immer neu laden wenn aufhören zu scrollen
Sie können sehen, dass es heruntergeladen und zwischengespeichert Bilder nachladen, wenn ich aufhören Scrollen (Ich scrolle nach unten und scrolle dann nach oben).
Wie kann ich verhindern, dass dies passiert?
<ImageView android:id="@+id/imgFeed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"/>
// UIL
options = new DisplayImageOptions.Builder()
.showImageOnLoading(defaultImage)
.showImageOnFail(defaultImage)
.showImageForEmptyUri(defaultImage)
.resetViewBeforeLoading(false)
.cacheOnDisk(true).delayBeforeLoading(0)
.displayer(new FadeInBitmapDisplayer(200)).cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build();
ImageAware imageAware = new ImageViewAware(viewHolder.imgFeed, false);
ImageLoader.getInstance().displayImage(item.getPhotoUrl(), imageAware, options);
// Picasso
Picasso.with(getContext())
.load(item.getPhotoUrl())
.placeholder(R.drawable.place_holder_big)
.resize(screenWidth, 0) //set max width
.into(viewHolder.imgFeed);
Für UIL, habe ich versucht, viele Möglichkeiten, in this issue aber sie funktionieren gar nicht für mich.
Update: scheint ich konfrontiert mit Speicher-Cache-Problem wie this question. Aber wie kann ich dieses Problem beheben? Schau dir die Facebook App an, sie haben es sehr gut gemacht. Alle Bilder haben unterschiedliche Größen mit passender Breite und sehr weiches Scrollen ohne Bilder neu zu laden. Wie können sie das tun?
Welche Version von Android haben Sie getestet? –
Es tritt auf, wenn ich Bilder in benutzerdefinierter Listenansicht mit Bildern und Text herunterlade. Weil die Methode getView für jedes Element aufgerufen wird. Sie müssen Ihre eigene vertikale Scroll-Liste mit Hilfe von scrollview –
@ A.Anderson scheint es für alle Android-Versionen aufgetreten ist. Ich testete auf Android 2.3, 4.4 und 5.0 – R4j