0

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 がドローアブルで設定されている場合、古いリソースが自動的にクリアされるとよいでしょう。

前もって感謝します。

4

2 に答える 2

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)

これらのスキームを使用します。

于 2016-01-21T08:07:24.697 に答える
0

ユニバーサル イメージ ローダーは、バックグラウンド機能の使用も提供します。以下のコードを確認してください:-

ここで、Uri はフォルダー イメージのパスまたはイメージの 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));
  }
});
于 2016-01-21T08:09:50.870 に答える