私はサーバーのラインコードからかなり基本的なロードイメージを持っています:
Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);
何らかの理由で、私は常に表示されているプレースホルダーにこだわっており、実際の画像ではありません!
有効かつ有効なURLが渡されるようにしました。そして、プレースホルダーなしで同じコードを使用するとうまくいきます
Glide.with(view.getContext()).load(url).into(view);
なぜアイデアがありますか?
transitionDrawableが原因で.dontAnimate()
を追加しようとしていますが、スクロールした後はキャッシュされているためアニメーションはありません。正しいコードは
Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).dontAnimate().into(view);
お役に立てばと思います
マニフェストにインターネットアクセス許可を追加したかどうかを確認します。
<uses-permission Android:name="Android.permission.INTERNET"/>
インターネット接続がない場合、Glideは例外を起動しません。
誰かが将来これに遭遇した場合、あなたは追加する必要があるかもしれません
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
この変更の正確な理由は定かではありませんが、それでも私の許可なしに私のコードは動作しませんでした。
ローディングGIFとしてProgressBarを使用する
Glide.with(context).
load(url)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
return false;
}
})
.crossFade(1000)
.into(imageView);
Glideにトランジションまたはアニメーションを使用しないでください。問題を解決します
コード:
Glide.with(context)
.load(horizontalHappyHourList.get(position).getImage())
// .transition(DrawableTransitionOptions.withCrossFade(400)) //Optional
.apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.RESOURCE)
.error(R.drawable.no_image))
.into(holder.imageView);
以下は私のために働いた奇妙な修正です。
以下は常に失敗します(12回の試行)-実際の画像は表示されません。
Glide.with(context)
.load(url)
.asBitmap()
.into(new SimpleTarget<Bitmap>(iconWidth, iconHeight) { ... }
次のことが常に成功します(12回の試行)-私は常に実際の画像を見ることができます:
Glide.with(context)
.load(url)
.asBitmap()
.listener(new RequestListener() {
public boolean onException(Exception e,Object o,Target t,boolean b)
{return false;}
public boolean onResourceReady(Object o,Object p,Target t,boolean b,boolean c)
{return false;}})
.into(new SimpleTarget<Bitmap>(iconWidth, iconHeight) { ... }
ご覧のとおり、ここでの唯一の違いは、リスナーを追加したことです。あまり意味がありませんが、これらのトライアルはかなり慎重に行われたので、私はそれで行きます。
上記の解決策はどれも私にとってはうまくいきませんでした。問題は、プレースホルダーにある可能性があります。画像の読み込みに使用しているビューにプレースホルダーがある場合、いくつかの問題が発生します。何らかの理由でそのプレースホルダーを削除すると、修正されるようです。
したがって、展開しようとしている(Image)ViewにAndroid:src = "@ mipmap/placeholder"などのプレースホルダーがある場合は、それを削除します。
<ImageView
Android:id="@+id/imgGallery"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:adjustViewBounds="true"
Android:scaleType="centerCrop"
Android:src="@mipmap/rugova1" />
このような
<ImageView
Android:id="@+id/imgGallery"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:adjustViewBounds="true"
Android:scaleType="centerCrop"
/>
それは私のために働いた。