我使用a ListView
来显示与这些图像相关的一些图像和标题.我从互联网上获取图像.有没有办法延迟加载图像,以便文本显示时,UI不会被锁定,图像会在下载时显示?
图像总数不固定.
我正在使用Picasso在我的Android应用程序中显示图像:
/**
* load image.This is within a activity so this context is activity
*/
public void loadImage (){
Picasso picasso = Picasso.with(this);
picasso.setDebugging(true);
picasso.load(quiz.getImageUrl()).into(quizImage);
}
Run Code Online (Sandbox Code Playgroud)
我已启用调试,它始终显示红色和绿色.但从不显示黄色
现在,如果我下次加载相同的图像并且互联网不可用,则不会加载图像.
问题:
在Volley
库中,NetworkImageView
类需要ImageLoader
通过在ImageCache
实现中搜索所有图像请求来处理所有图像请求,用户可以自由选择缓存应该如何工作,图像的位置和名称.
我正在切换Volley
到Retrofit
,我决定尝试的图像Picasso
.
使用前一个库,我在包含图像URL的每个项目中都有一个String参数,然后我使用myNetworkImageView.setImageUrl(item.getURL())
它,它能够确定图像是否缓存在磁盘上.如果图像存在于缓存文件夹中,则加载图像,否则下载并加载图像.
我希望能够对Picasso做同样的事情,是否可以使用Picasso
API或我应该自己编写这样的功能?
我想将图像下载到文件夹(缓存文件夹),并Picasso.with(mContext).load(File downloadedimage)
在完成时使用.这是正确的方法还是有任何最佳做法?
我在我的应用程序中使用Picasso有效地加载图像并且正在最好地完成他的工作.问题是,目前如果我Picasso.with()
使用相同的URL多次调用 ,但是每次使用具有不同尺寸的图像视图时,图像获得下载again.In Glide
我们的方法 .diskCacheStrategy()
与DiskCacheStrategy.SOURCE
解决的problem.is有毕加索任何替代办法?
在这个查询中,我们将获得Glid的解决方案但不适用于Picasso.how我可以重用图像而无需重新加载不同尺寸的ImageView.
这是我正在使用的代码
Picasso.with(context)
.load(URI)
.placeholder(R.drawable.ic_profile_thumb)
.resize(180, 180).centerInside()
.into(viewHolder.imgThumbnail);
Run Code Online (Sandbox Code Playgroud) 我想展示一张照片系列,照片之间没有间隙,照片会定期更换.我意识到Picasso在开始下载之前初始化了ImageView,无论我是否在调用()之前获取(),它总是这样做.
我使用fetch()来保持图像之间的间隙较小,并使用.placeholder(R.color.black),但即使从内存加载图像,间隙仍然可见.
我的代码看起来像这样
Picasso.with(getContext()).load(url).fetch();
Run Code Online (Sandbox Code Playgroud)
然后延迟[目前正在修复,我想根据网络速度调整]
Picasso.with(getContext()).load(url).into(screenSurface);
Run Code Online (Sandbox Code Playgroud)
我注意到fetch()不支持任何回调参数并返回void,因此我似乎不可能知道缓存何时变暖.
两个问题:
[我知道我可以用某种方式手动编码,但如果Picasso支持它,我想使用它.]
我正在使用Picasso从我的服务器加载图像.它工作正常,但我正在加载图像,并在以后更改它.但是Picasso将图像缓存在磁盘中的某个位置(我检查了SD卡,找不到Picasso存储的任何目录).
我尝试按照此问题的接受答案的建议删除缓存:在Picasso中使缓存无效
我还尝试使用以下命令跳过缓存:Picasso.with(ctx).load(新文件("/ path/to/image")).skipMemoryCache().into(imageView)
但这些方法都没有奏效.
感谢任何可以帮助我解决此问题的建议或提示.