Glide:加载 url 作为位图不起作用

Glide : load url as bitmap not working

我想使用 Glide 从服务器加载位图。如果成功,则将其放入我的 ImageView,然后将其添加到我的 ArrayList。如果失败(损坏 url、无互联网等),则将 ImageView 设置为我的默认图像。但是 Glide 的监听器根本不工作,LogCat 也根本不显示 "onException" 和 "onResourceReady"。我的代码有什么问题?

Glide.with(activity.getApplicationContext())
        .load(MainActivity.URL_SERVER + "/asset/" + imageUrl.getString(i))
        .signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
        .listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                ivImage.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.noimage));
                return false;
            }
            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                ivImage.setImageDrawable(resource);
                imageLoadedBitmap.add(((GlideBitmapDrawable) resource).getBitmap());
                return false;
            }
        });

只需在您的适配器中使用这行代码:

Glide.with(context).load(url).error(R.drawable.noimage).centerCrop().crossFade().into(ivImage);

截至目前,该方法链中没有任何内容真正触发图像加载操作。您可以在最后使用 .into(ivImage) 并仅使用侦听器将位图添加到数组。或者您可以使用 .preload() 进行更多自定义。此外,使用 .error(R.drawable.noimage) 作为错误图像。

虽然在数组中存储位图看起来不是个好主意。如果您正在加载列表中的图像,请将 glide 调用放入您的适配器中,让 glide 自行处理捕捉。

在图像加载之前,您可以添加默认占位符。

Glide.with(getActivity()) 
  load(backgroundImage).placeholder(R.drawable.no_images); 

您还可以在 error 标签中加载图片失败时添加不同的占位符。

Glide.with(getActivity()).load(backgroundImage).placeholder(R.drawable.no_images).error(R.drawable.no_images);