我有一个带有文本和来自互联网的大图片的ListView。我的图片项目具有适合宽度和wrap_content
高度。
我试图使用UIL
和Picasso
将图像显示为背景。 它们都可以工作,但当我停止滚动时,图像始终重新加载,使ListView闪烁
效果看起来像这样:
您可以看到当我停止滚动时(向下滚动,然后向上滚动),它会重新加载已下载和缓存的图像。
我该如何防止这种情况发生?
<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);
对于 UIL,我在这个问题中尝试了很多方法,但它们都无法为我工作。
更新:看起来我遇到了内存缓存问题,就像这个问题。但是我该如何解决这个问题?看看 Facebook 应用程序,他们做得非常好。所有图像的大小都不同,适合宽度,并且在不重新加载图像的情况下非常流畅地滚动。他们是如何做到的?