我们在 B64 中有一个图像,我们想使用该图像作为通用图像加载器中的加载图像,而不是从 url 加载更好的图像。因此,我们从 b64 中的该 url 创建一个位图并将其转换为 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()
但是在内部它存储了一个存储的资源,所以我的drawable没有显示,而是存储的资源。创建一个新的 DisplayImageOptionsBuilder 对我有用,但如果 showImageOnLoading 设置为可绘制对象,那么旧资源会自动清除。
提前致谢。