0

我有代码使用来自 com.nostra13.universalimageloader 的 imageLoader 库在列表视图中显示图像

像这样的代码

imageLoader.displayImage(link_url, imageView, options, animateFirstListener);   

但是这段代码使这个应用程序必须从这个 url 下载图像。我想问一下,我可以使用这个缓存图像来显示图像吗?因此,如果不连接互联网,则可以显示图像,因为该图像之前已保存为缓存??如果此图像来自缓存,如何在 imageview 中显示图像?谢谢

4

3 回答 3

2

我猜它默认存储缓存。

检查一次断开互联网。

options = new DisplayImageOptions.Builder()
                .showStubImage(R.drawable.deafaultimage).cacheInMemory()
                .cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565).build();
于 2013-10-08T08:20:15.093 回答
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);
于 2013-10-08T08:27:13.753 回答
0

HTTP 缓存取决于Cache-Control 标头。如果服务器在响应中发送了正确的标头,那么即使没有网络,库也会自动缓存资源并访问它。你不必明确地做任何事情。

如果需要,您可以配置更多选项,例如缓存大小等。请参阅文档

于 2013-10-08T08:22:52.477 回答