我们在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设置为可绘制的,那么将会自动清除旧资源。
在此先感谢。
UIL支持位图吗? –
我认为这不是,但可绘制的是。这就是为什么我们要将位图转换为可绘制位图的原因,因此应该支持它(因为imageview.setImageDrawable已成功显示bitmapDrawable) – FVod
它仍然是位图,imageView是Android的一部分,它支持BitmapDrawable –