1

我正在使用 Universal Image Loader 下载图像。这是我的配置和显示选项。

File cacheDir = getApplicationContext().getCacheDir();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
    getApplicationContext())
    .discCache(new UnlimitedDiscCache(cacheDir)).threadPoolSize(3)
    .denyCacheImageMultipleSizesInMemory()
    .tasksProcessingOrder(QueueProcessingType.LIFO)
    .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
    .build();

options = new DisplayImageOptions.Builder()
    .cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565)
    .imageScaleType(ImageScaleType.EXACTLY).resetViewBeforeLoading()
    .showStubImage(R.drawable.bt_fine_dining).build();

一切正常。但我想检查图像是否已经存在。使用 discCacheUtil 能够获取图像文件。[DiscCacheUtil.findInCache(imageUri, discCache)]。但是有没有办法直接获取位图而不是文件?

而且如果我同时指定 cacheInMemory() 和 cacheOnDisc() ,图像会被保存两次吗?这里是否有任何额外的内存消耗,因为图像将同时保存在内存和磁盘中?请帮我。

提前致谢

4

2 回答 2

1

尝试使用loadImageSync(String uri). 它为您提供位图。

如果你想从位图中绘制

Drawable d = new BitmapDrawable(getResources(),imageLoader.loadImageSync(url);
于 2014-02-25T22:59:37.500 回答
1
imageLoader.displayImage(imageUri, imageView, displayOptions, new ImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
    // Here loadedImage is you Bitmap object.
}
});
于 2013-06-04T06:03:24.753 回答