我使用com.nostra13.universalimageloader中的imageLoader库在列表视图中显示图像的代码
这样的代码
imageLoader.displayImage(link_url, imageView, options, animateFirstListener);
但此代码使此应用必须从此网址下载图片。我想问,我可以使用此缓存图像来显示图像。因此,如果没有连接互联网,可以显示图像,因为此图像之前保存为缓存?如果此图像来自缓存,如何在imageview中显示图像?感谢
答案 0 :(得分:2)
默认情况下,我会存储缓存。
检查一次断开互联网。
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.deafaultimage).cacheInMemory()
.cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565).build();
答案 1 :(得分:2)
不应再次下载,而应将图像缓存在手机记忆库或SD卡中。
它使用url作为密钥,在sdcard中缓存图像(如果已正确配置)。如果存在从缓存中显示,则下载,缓存和显示图像。
在自定义适配器构造函数
中 File cacheDir = StorageUtils.getOwnCacheDirectory(activity context, "cache_folder")
imageLoader = ImageLoader.getInstance();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
.discCache(new UnlimitedDiscCache(cacheDir))
.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
.enableLogging()
.build();
imageLoader.init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_id)//display stub image untik image is loaded
.cacheInMemory()
.cacheOnDisc()
.displayer(new RoundedBitmapDisplayer(20))
.build();
在你的getView()
中viewholder.image=(ImageView)vi.findViewById(R.id.imageview);
imageLoader.displayImage(imageurl, viewholder.image,options);
答案 2 :(得分:0)
HTTP缓存取决于Cache-Control headers。如果服务器在响应中发送正确的标头,那么即使没有网络,库也会自动缓存资源并访问它。您不必明确地做任何事情。
如果需要,您可以配置更多选项,如缓存大小等。请参阅docs。