0

我们在B64中有一个图像,我们希望将该图像用作通用图像加载程序中的加载图像,而不从网址加载更好的图像。所以我们在b64中创建一个位图,并将其转换为BitmapDrawable。 结果显示很好,如果我做的:通用图像加载程序和位图可绘制

imageView.setImageDrawable(bitmapDrawable) 

但是,在DisplayImageOptions,如果我设置bitmapDrawable上加载图像,图像永远不会显示。我做了以下内容:

final DisplayImageOptions imageOptions = mDisplayImageOptionsDefaultBuilder. 
     .showImageOnLoading(bitmapDrawable) 
     .showImageOnFail(bitmapDrawable) 
     .showImageForEmptyUri(bitmapDrawable) 
     .build() 

正如你所看到的,我设置位图绘制不仅加载时,但由于图像时也失败了(因为我们不希望这样的形象来改变形象从URL加载更好的图像时出现错误的情况)。这样做的结果是可绘制的位图从不显示。我们做错了什么?

更新: 调试发生了什么后,我已经看到,问题不是位图可绘制,它支持和正常工作。问题是,我使用的是默认的显示选项生成器(mDisplayImageOptionsDefaultBuilder),比在某些时候做的:

final DisplayImageOptions imageOptions = mDisplayImageOptionsDefaultBuilder. 
     .showImageOnLoading(loadingResource) 
     .showImageOnFail(errorResource) 
     .showImageForEmptyUri(errorResource) 
     .build() 

所以这是在通用图像装载机的错误,因为现在我创建了显示图像的选项:

.showImageOnLoading(bitmapDrawable) 

另一种“解决方案”是做:

final DisplayImageOptions imageOptions = mDisplayImageOptionsDefaultBuilder. 
     .showImageOnLoading(0) 
     .showImageOnLoading(loadingResource) 
     .showImageOnFail(errorResource) 
     .showImageForEmptyUri(errorResource) 
     .build() 

但是在内部它存储有存储的资源,所以我的绘制没有显示,但是存储的资源来代替。创建一个新的DisplayImageOptionsBuilder为我工作,但如果showImageOnLoading设置为可绘制的,那么将会自动清除旧资源。

在此先感谢。

+0

UIL支持位图吗? –

+0

我认为这不是,但可绘制的是。这就是为什么我们要将位图转换为可绘制位图的原因,因此应该支持它(因为imageview.setImageDrawable已成功显示bitmapDrawable) – FVod

+0

它仍然是位图,imageView是Android的一部分,它支持BitmapDrawable –

回答

0

UIL仅支持以下方案:

"h t t p://site.com/image.png" // from Web 
"file:///mnt/sdcard/image.png" // from SD card 
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail) 
"content://media/external/images/media/13" // from content provider 
"content://media/external/video/media/13" // from content provider (video thumbnail) 
"assets://image.png" // from assets 
"drawable://" + R.drawable.img // from drawables (non-9patch images) 

使用这些方案。

+0

我不明白,所以从位图生成的drawable不受支持,但从资源drawableable是? – FVod

+0

支持资源可绘制 –

+0

谢谢。我更新了帖子,支持位图drawable,问题是UIL使用的是旧的加载资源,而不是使用位图drawable。 – FVod

0

通用图像装载机还提供了使用背景functionality.Please检查以下男女同校的吧: -

这里开放的是文件夹图片的路径或图像的URL。

imageLoader.loadImage(YOUR_URL, new SimpleImageLoadingListener() { 
@Override 
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
    super.onLoadingComplete(imageUri, view, loadedImage); 
    layout.setBackgroundDrawable(new BitmapDrawable(loadedImage)); 
    } 
});