まず、Glide
とGlideApp
の違いは何ですか?後者は自動的に生成されるようですが、手順は複雑であるように見えたので、代わりにGlideを使用しました。どちらも同じメソッドを持っているようです。
そこで、Glide.with(activity).load(fileName).error().into(imageView)
を使用しました。問題は、error()に何を渡すかを理解できないことです。描画可能なリソースIDを取りませんでした。 Android StudioはパラメーターがRequestBuilder <Drawable!>?であると言いますが、例は見つかりませんでした。
「エラー:型の不一致:推定型はIntですが、RequestBuilder <Drawable!>?が必要でした」
Glide v4を使用している場合、RequestOptionsを使用して、必要なオプションを追加する必要があります。たとえば、centerCrop()、placeholder()、error()、priority()、diskCacheStrategy().
したがって、RequestOptionsを使用すると、Glideは次のようになります。
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.drawable.default_avatar)
.error(R.drawable.default_avatar)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH);
Glide.with(mContext).load(imgUrl)
.apply(options)
.into(picThumbnail);
これで、エラーイメージを表示し、プレースホルダーがディスクキャッシュなどを設定できます。
GlideAppもGlide v4の一部です。 transforms()メソッドを使用して、Glide v4で複数のTransformationを提供するために使用されます。
GlideApp.with(mContext)
.load(imgUrl)
.transforms(new CenterCrop(), new RoundedCorners(20))
.into(target);
GlideApp-を使用したerror()およびplaceholder()
GlideApp.with(mContext)
.load(imageUrl)
.placeholder(R.drawable.placeholder_image)
.error(R.drawable.error_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.into(offerImage);
2番目の質問に答えて1つがタイトルの一部である場合、呼び出しているURLが予想される場合、またはdrawable/bitmapがnullで、再試行を呼び出す場合にのみ、error()
に注意する必要があります。それ以外の場合は、error
またはplaceholder
とは異なる状態を通知するためにfallback
drawableを使用できます。次の表は、非常に簡単に説明しています。 残念ながら、画像の元のソースを思い出せません。元の著者に適切に帰属できるように、ご存じの場合はコメントでお知らせください!
上記のチャートからもわかるように、プレースホルダーを設定するだけで、それぞれの状態を表す必要がない場合にのみ十分です。
決定木があなたの質問のいくつかを明らかにすることを願っています!あなたの質問のすべての部分に答えていないことをおologiesびしますが、他の答えのいくつかはすでにそれをしています!
乾杯!
error()
でドロウアブルを指定し、Glide
が例外をスローすると、この画像はダミー画像のように表示されます。 error()
メソッドで指定された画像は、プロジェクトのリソースになります。
例えば:
Glide.with(this)
.load(urlImage)
.error(R.drawable.error_image).into(new GlideDrawableImageViewTarget(imageView) {
@Override
public void onResourceReady(GlideDrawable drawable, GlideAnimation anim) {
super.onResourceReady(drawable, anim);
}
});
error():エラーDrawableは、リクエストが永続的に失敗したときに表示されます。エラーDrawablesは、リクエストされたURL /モデルがnullで、フォールバックDrawableが設定されていない場合にも表示されます
GlideApp.with(fragment)
.load(url)
.error(R.drawable.error)
.into(view);
または
GlideApp.with(fragment)
.load(url)
.error(new ColorDrawable(Color.RED))
.into(view);
Glideでは、読み込み中にエラーが発生した場合に表示する必要がある描画可能なイメージを渡すように求めています。必要でない限り、このパラメーターは不要です。私は通常使用しています。
Glide.with(mContext).load(myModel.getDefaultThumbnailUrl()).dontAnimate().centerCrop().override(mImageSize, mImageSize).into(itemViewHolder.imgHolder);
また、エラーが発生または完了したためにグライドでコールバックが必要な場合は、このようなリスナーを作成できます。
RequestListener<String, GlideDrawable> glideCallback = new RequestListener<String, GlideDrawable>(){
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Toast.makeText(myActivity.this, getString(R.string.error_loading_from_url), Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
convertCardToBitmap(mSendWhenComplete);
}
},500);
return false;
}
};
次に、チェーンロード呼び出しに.listener(glideCallback)を含めます。
エラーのオーバーロードは次のとおりです。