Mam ListView z tekstem i dużym obrazem z Internetu. Mój element obrazu ma szerokość pasowania i wysokość wrap_content
.
Próbowałem wyświetlić obraz w tle za pomocą UIL
& Picasso
. Oba z nich może pracować, ale obraz zawsze ładuje kiedy zatrzymać przewijanie, a to sprawia, że ListView migotanie
Wygląda to tak:
UIL, Picasso - Obrazy w adapterze zawsze przeładowują się po zatrzymaniu przewijania
Widać, że go przeładować pobrane i buforowane obrazów kiedy zatrzymać przewijanie (Przewijam w dół, a następnie przewijam w górę).
Jak mogę temu zapobiec?
<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);
Dla UIL, próbowałem wiele sposobów, w this issue ale one nie działają na mnie w ogóle.
Aktualizacja: wydaje mi się, że mam do czynienia z problemem pamięci podręcznej, takim jak this question. Ale jak mogę rozwiązać ten problem? Popatrz na aplikację na Facebooku, zrobili to bardzo dobrze. Wszystkie obrazy mają różne rozmiary z dopasowaną szerokością i bardzo płynne przewijanie bez ponownego ładowania obrazów. Jak mogą to zrobić?
Którą wersję Androida testujesz? –
Występuje, gdy pobieranie obrazów w niestandardowym widoku listy z obrazami i tekstem. Ponieważ metoda getView jest wywoływana dla każdego elementu. Musisz utworzyć własną pionową listę przewijania za pomocą scrollview –
@ A.Anderson wydaje się, że wystąpił we wszystkich wersjach Androida. Testowałem na Android 2.3, 4.4 i 5.0 – R4j