我想使用Glide从服务器加载位图。如果成功,则将其放入我的ImageView,然后将其添加到我的ArrayList。如果它失败(打破网址,没有互联网等),请将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;
}
});
答案 0 :(得分:2)
截至目前,该方法链中的任何内容实际上都不会触发图像加载操作。您最后可以使用.into(ivImage)
,只需使用侦听器将位图添加到数组中。或者您可以使用.preload()
进行更多自定义。另外,使用.error(R.drawable.noimage)
表示错误图像。
在数组中存储位图看起来不错。如果您要在列表中加载图像,请在您的适配器中放置滑行调用,然后让滑行处理捕获本身。
答案 1 :(得分:0)
只需在适配器中使用以下代码:
Glide.with(context).load(url).error(R.drawable.noimage).centerCrop().crossFade().into(ivImage);
答案 2 :(得分:0)
您可以添加默认占位符,直到图片加载为止。
Glide.with(getActivity())
load(backgroundImage).placeholder(R.drawable.no_images);
当图像无法加载错误标记时,您也可以添加不同的占位符。
Glide.with(getActivity()).load(backgroundImage).placeholder(R.drawable.no_images).error(R.drawable.no_images);