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);
我想使用 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);