我正在使用 Android-Universal-Image-Loader 库来加载/缓存远程图像,并且已经在源代码中挖掘了很长一段时间,试图找到一种方法来为我的 ImageLoadingListener 检索原始图像大小(宽度和高度)。
下面的示例代码只是让您了解我正在尝试做的事情。
protected class ViaImageLoadingListener implements ImageLoadingListener {
final SelectableImageView selectableImageView ;
protected ViaImageLoadingListener(SelectableImageView selectableImageView) {
this.selectableImageView = selectableImageView;
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
selectableImageView.setImageBitmap(loadedImage);
// loadedImage.getWeight() will not return the original
// dimensions of the image if it has been scaled down
selectableImageView.setOriginalImageSize(width, height);
selectableImageView.invalidate();
}
我尝试扩展 ImageDecoder 类和 ImageLoader 类,以找到一种将解码器(我可以从中获取#prepareDecodingOptions
方法中的原始图像大小)链接到我的自定义 ImageLoadingListener 的迂回方法。但是配置对象是私有的,并且字段(包括解码器)无法从子类中访问(并且无论如何感觉都是一种过于笨拙的解决问题的方法)。
我是否忽略了一种简单的“内置”方式来获取原始图像大小而不会失去 UIL 的缩放/内存管理的好处?