web-dev-qa-db-ja.com

グライドが実際の画像を読み込んでおらず、プレースホルダーが付いていない

私はサーバーのラインコードからかなり基本的なロードイメージを持っています:

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);

何らかの理由で、私は常に表示されているプレースホルダーにこだわっており、実際の画像ではありません!

有効かつ有効なURLが渡されるようにしました。そして、プレースホルダーなしで同じコードを使用するとうまくいきます

Glide.with(view.getContext()).load(url).into(view);

なぜアイデアがありますか?

45
TareK Khoury

transitionDrawableが原因で.dontAnimate()を追加しようとしていますが、スクロールした後はキャッシュされているためアニメーションはありません。正しいコードは

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).dontAnimate().into(view);

お役に立てばと思います

85
Abbes Yassine

マニフェストにインターネットアクセス許可を追加したかどうかを確認します。

<uses-permission Android:name="Android.permission.INTERNET"/>

インターネット接続がない場合、Glideは例外を起動しません。

37
Ivo Stoyanov

誰かが将来これに遭遇した場合、あなたは追加する必要があるかもしれません

<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>

この変更の正確な理由は定かではありませんが、それでも私の許可なしに私のコードは動作しませんでした。

3
user2415963

ローディング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);
2
庄景鹏

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) { ... }

ご覧のとおり、ここでの唯一の違いは、リスナーを追加したことです。あまり意味がありませんが、これらのトライアルはかなり慎重に行われたので、私はそれで行きます。

1
Joseph Johnson

上記の解決策はどれも私にとってはうまくいきませんでした。問題は、プレースホルダーにある可能性があります。画像の読み込みに使用しているビューにプレースホルダーがある場合、いくつかの問題が発生します。何らかの理由でそのプレースホルダーを削除すると、修正されるようです。

したがって、展開しようとしている(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"
            />

それは私のために働いた。

0
Bleron Qorri