在Volley库中,NetworkImageView类需要ImageLoader 通过在ImageCache 实现中搜索所有图像请求来处理所有图像请求,用户可以自由选择缓存应该如何工作,图像的位置和名称.
我正在切换Volley 到Retrofit,我决定尝试的图像Picasso.
使用前一个库,我在包含图像URL的每个项目中都有一个String参数,然后我使用myNetworkImageView.setImageUrl(item.getURL())它,它能够确定图像是否缓存在磁盘上.如果图像存在于缓存文件夹中,则加载图像,否则下载并加载图像.
我希望能够对Picasso做同样的事情,是否可以使用PicassoAPI或我应该自己编写这样的功能?
我想将图像下载到文件夹(缓存文件夹),并Picasso.with(mContext).load(File downloadedimage)在完成时使用.这是正确的方法还是有任何最佳做法?
我在我的项目中使用趋势毕加索,但我已经倾倒了堆,它看起来像这样.现在昨天它给了我48M LruCache用于毕加索.
我怎么能指定它的大小?
注意:我加载的图像显然很大.
如果有人提出fit()或者centerCrop(),我已经知道这些功能会减少图像尺寸,对吗?但有时我必须ListView在全视图中显示小图像.
现在,这些功能是否缓存缩小的图像?

我有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);
Run Code Online (Sandbox Code Playgroud)
对于UIL,我在这个问题上尝试了很多方法,但它们根本不适用于我.
更新:似乎我遇到了像这个问题的内存缓存问题.但是我该如何解决这个问题呢?看看Facebook应用程序,他们做得非常好.所有图像都有不同的尺寸,适合的宽度,非常平滑的滚动,无需重新加载图像.他们怎么能这样做?