我正在嘗試使用UIL加載低分辨率圖像,然後在準備就緒時加載高分辨率版本。我遇到的問題是隻有第一次調用imageView.setImageBitmap(bitmap);正在執行。高分辨率圖像永遠不會放入圖像視圖中。通用圖像加載器 - 如何將第二個圖像加載到ImageView中?
我正在使用1.8.6版本,似乎後來的請求正在被對engine.cancelDisplayTaskFor(imageView)的調用取消;在DisplayBitmapTask中。我的代碼有什麼問題?我如何避免取消後續的displayImage()請求?
public static DisplayImageOptions.Builder getDefaultDisplayImageOptions() {
return new DisplayImageOptions.Builder()
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565) // Will be overridden by decodingOptions()
.cacheInMemory(true)
.cacheOnDisc(true)
.displayer(new SimpleBitmapDisplayer()); // default
}
public static void displayImageWithPlaceholder(final ImageView imageView, final String imageUrl, final String previewImageUrl) {
DisplayImageOptions.Builder builder = getDefaultDisplayImageOptions();
DisplayImageOptions displayImageOptions = builder.displayer(new SimpleBitmapDisplayer2()).build();
ImageLoader.getInstance().displayImage(
previewImageUrl,
imageView,
displayImageOptions,
new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Turn off cache in memory for this call getting the larger images.
// It will still be cached on disk if possible.
DisplayImageOptions.Builder builder = getDefaultDisplayImageOptions();
DisplayImageOptions displayImageOptions = builder.cacheInMemory(false).displayer(new SimpleBitmapDisplayer2()).build();
ImageLoader.getInstance().displayImage(imageUrl, imageView, displayImageOptions, new SimpleImageLoadingListener() {});
}
}
);
}
private static class SimpleBitmapDisplayer2 implements BitmapDisplayer {
@Override
public Bitmap display(Bitmap bitmap, ImageView imageView, LoadedFrom loadedFrom) {
imageView.setImageBitmap(bitmap);
return bitmap;
}
}
'SimpleBitmapDisplayer'和'SimpleBitmapDisplayer2'是完全一樣的。 – NOSTRA