我已经使用UIL加载并显示了一些来自互联网的图片。
DisplayImageOptions options = new DisplayImageOptions.Builder()
.displayer(new CircleBitmapDisplayer(0xFF70C7BE, 2))
.showImageOnLoading(R.drawable.avatar)
.showImageOnFail(R.drawable.avatar)
.showImageForEmptyUri(R.drawable.avatar)
.cacheOnDisk(true)
.cacheInMemory(false)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
//show image
ImageLoader.getInstance().displayImage(imgURL, imgAvatar, options);
从代码中可以看出,我使用CircleBitmapDisplayer作为显示器,并使用图像设置showImageOnFail。
我面临的问题是显示器仅在图像加载成功时应用,但在图像加载失败时不应用。
那么当图像加载失败时,如何将显示器应用于showImageOnFail中的图像集?
答案 0 :(得分:0)
在onLoadingFailed
和onLoadingCancelled
上编写代码。
imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
...
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
...
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
...
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
...
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
...
}
});
了解更多信息,请参阅以下链接: -
答案 1 :(得分:0)
正如Duggu建议的那样,使用ImageLoadingListener并将显示器应用于位图并将其提供给onLoadingFailed中的ImageView,而onLoadingCancelled可以某种方式解决问题。
这是最终的代码。
ImageLoader.getInstance().displayImage(final_url, imgAvatar, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
new CircleBitmapDisplayer(0xFF70C7BE, 2).display(BitmapFactory.decodeResource(context.getResources(), R.drawable.avatar), (ImageView)view);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
new CircleBitmapDisplayer(0xFF70C7BE, 2).display(BitmapFactory.decodeResource(context.getResources(), R.drawable.avatar), (ImageView)view);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
new CircleBitmapDisplayer(0xFF70C7BE, 2).display(loadedImage, (ImageView)view);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
new CircleBitmapDisplayer(0xFF70C7BE, 2).display(BitmapFactory.decodeResource(context.getResources(), R.drawable.avatar), (ImageView)view);
}
});
我已修改CircleBitmapDisplayer的显示(...)以显示(Bitmap位图,ImageView imageAware)