50

私は Glide を使用して画像を読み込み、リスナーを追加して、リソースの準備ができたとき、または何らかのエラーが発生したかどうかを確認しました。

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.glide_placeholder)
    // use dontAnimate and not crossFade to avoid a bug with custom views
    .dontAnimate()
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .listener(new RequestListener<String, GlideDrawable>() {
        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            // do something
            return true;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            // do something
            return true;
         }
    })
    .into(mCustomImageView);

アプリは内部で実行されることはありませんがonResourceReadyonExceptionリスナーを削除してコールバックなしで非同期ダウンロードを許可すると、正しく実行されます。

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.glide_placeholder)
    // use dontAnimate and not crossFade to avoid a bug with custom views
    .dontAnimate()
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .into(mCustomImageView);

GlideDrawableImageViewTargetリスナーの代わりにコールバックを受信しようとしましたが、アプリは内部で実行されますが、内部でonLoadStartedは実行されません.onLoadClearedonLoadFailedonResourceReady

4

7 に答える 7

42

見えなくなったり消えたりする場合は、ImageView の可視性に関するバグのようです。ここで問題を開きました: https://github.com/bumptech/glide/issues/618

于 2015-09-11T07:12:59.173 に答える
10

同じ問題に遭遇しました。onResourceReady が false を返すようにすることで、うまくいきました。

于 2016-05-10T13:41:32.843 に答える
0

リスナーで Glide を使用する Kotlin の方法

Glide.with(context)
                .load(image_url)
                .listener(object : com.bumptech.glide.request.RequestListener<Drawable> {
                    override fun onLoadFailed(
                        e: GlideException?,
                        model: Any?,
                        target: Target<Drawable>?,
                        isFirstResource: Boolean
                    ): Boolean {
                        return false
                    }

                    override fun onResourceReady(
                        resource: Drawable?,
                        model: Any?,
                        target: Target<Drawable>?,
                        dataSource: DataSource?,
                        isFirstResource: Boolean
                    ): Boolean {
                        img_product_banner.visibility = View.VISIBLE
                        return false
                    }

                }).placeholder(R.drawable.placeholder)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(img_product_banner)
于 2020-09-19T02:21:56.123 に答える