B64 に画像があり、その画像を Universal Image Loader の読み込み画像として使用したいのですが、より良い画像は 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()
したがって、Universal Image Loader にバグがあります。これは、次のように表示画像オプションを作成しているためです。
.showImageOnLoading(bitmapDrawable)
別の「解決策」は次のとおりです。
final DisplayImageOptions imageOptions = mDisplayImageOptionsDefaultBuilder.
.showImageOnLoading(0)
.showImageOnLoading(loadingResource)
.showImageOnFail(errorResource)
.showImageForEmptyUri(errorResource)
.build()
しかし、内部的にはリソースが保存されていることが保存されるため、ドローアブルは表示されず、代わりに保存されたリソースが表示されます。新しい DisplayImageOptionsBuilder の作成は私にとってはうまくいきましたが、showImageOnLoading がドローアブルで設定されている場合、古いリソースが自動的にクリアされるとよいでしょう。
前もって感謝します。