android – 让Volley的NetworkImageView显示本地图像文件

前端之家收集整理的这篇文章主要介绍了android – 让Volley的NetworkImageView显示本地图像文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Network ImageView显示从远程URL下载的一些封面,我成功地设法缓存并显示它们,但我想让用户根据需要设置自己的封面图像.
我试图使用setImageUrl方法和Uri.fromFile(mCoverFile).toString()作为参数,但它不起作用.由于它是远程和本地图像的混合,我无法切换到常规的ImageViews,所以我想知道是否有任何方法可以加载本地图像.

我当然知道ImageView的setImageBitmap方法,但是NetworkImageView会自动调整创建的Bitmap的大小,并且还会阻止GridViews和ListViews中的View回收.

更新:njzk2的答案成功了.要根据您的视图大小自动调整位图,只需从Volley的源代码复制ImageRequest.doParse方法.

解决方法

NetworkImageView使用ImageLoader,而ImageLoader又使用ImageCache.

如果您对密钥使用相同的机制,则可以为图像提供自定义ImageCache:

return new StringBuilder(url.length() + 12).append("#W").append(maxWidth)
            .append("#H").append(maxHeight).append(url).toString();

url在实际请求完成之前未经过测试,所以这里没有问题.

通常,您的“缓存”可能如下所示:

public class MyCache implements ImageLoader.ImageCache {

    @Override
    public Bitmap getBitmap(String key) {
        if (key.contains("file://")) {
            return BitmapFactory.decodeFile(key.substring(key.indexOf("file://") + 7));
        } else {
            // Here you can add an actual cache
            return null;
        }
    }
    @Override
    public void putBitmap(String key,Bitmap bitmap) {
        // Here you can add an actual cache
    }
}

你使用它像:

imageView.setImageUrl(Uri.fromFile(mCoverFile).toString(),new MyCache());

(这还没有经过实际测试,可能会有一些调整)

原文链接:https://www.f2er.com/android/309414.html

猜你在找的Android相关文章