首先,Glide
和GlideApp
之间有什么区别?后者似乎是自动生成的,但步骤似乎很复杂,所以我使用了Glide。他们似乎都有相同的方法。
所以,我使用了Glide.with(activity).load(fileName).error().into(imageView)
。问题是我无法理解传递给error()的内容。它没有采用可绘制的资源ID。 Android Studio说参数是RequestBuilder< Drawable!> ?,但我找不到任何例子。
"错误:类型不匹配:推断类型是Int但是RequestBuilder<可绘制!&GT ;?预期"
答案 0 :(得分:34)
如果您使用 Glide v4 ,则必须使用 RequestOptions 来包含所需的更多选项,例如 centerCrop(),占位符(),错误(),优先级(), diskCacheStrategy() 强>
因此在使用RequestOptions后,您的Glide将如下所示 -
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.drawable.default_avatar)
.error(R.drawable.default_avatar)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH);
Glide.with(mContext).load(imgUrl)
.apply(options)
.into(picThumbnail);
现在您可以显示错误图像和占位符设置磁盘缓存等。
GlideApp 也是Glide v4的一部分。它用于在Glide v4中使用transforms()方法提供多个转换:
GlideApp.with(mContext)
.load(imgUrl)
.transforms(new CenterCrop(), new RoundedCorners(20))
.into(target);
使用 GlideApp - error()和占位符()
GlideApp.with(mContext)
.load(imageUrl)
.placeholder(R.drawable.placeholder_image)
.error(R.drawable.error_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.into(offerImage);
答案 1 :(得分:6)
要回答你的第二个问题而且那个是标题的一部分,你真的应该关心error()
,如果你想要你正在调用的url或者drawable / bitmap是null并且你可能想调用一个重试,否则您可以使用error
drawable来表示与placeholder
或fallback
相比的不同状态。以下图表非常简单地解释了它:
不幸的是我记不起图像的原始来源了。如果您知道,请在评论中告诉我,我可以正确地将其归属于原作者!
正如您从上面的图表中看到的那样,如果您不想为每个人表示不同的状态,那么仅设置占位符就足够了。
希望决策树能够清除你的一些问题!抱歉,我没有回答你问题的所有部分,但其他一些答案已经做到了!
干杯!
答案 2 :(得分:0)
Glide希望您传递哪个图像可绘制,如果在加载时发生错误,则应显示该图像。除非您喜欢,否则不需要此参数。我通常只是使用。
Glide.with(mContext).load(myModel.getDefaultThumbnailUrl()).dontAnimate().centerCrop().override(mImageSize, mImageSize).into(itemViewHolder.imgHolder);
此外,如果你想在滑动时发生错误发生或完成错误,你可以创建一个这样的监听器。
RequestListener<String, GlideDrawable> glideCallback = new RequestListener<String, GlideDrawable>(){
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Toast.makeText(myActivity.this, getString(R.string.error_loading_from_url), Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
convertCardToBitmap(mSendWhenComplete);
}
},500);
return false;
}
};
然后在链式加载调用中包含.listener(glideCallback)。
错误重载包括:
答案 3 :(得分:0)
您在error()
中指定了一个drawable,如果Glide
抛出异常,则此图像显示为虚拟图像。 error()
方法中指定的图像将是您的项目的资源。
例如:
Glide.with(this)
.load(urlImage)
.error(R.drawable.error_image).into(new GlideDrawableImageViewTarget(imageView) {
@Override
public void onResourceReady(GlideDrawable drawable, GlideAnimation anim) {
super.onResourceReady(drawable, anim);
}
});
错误():当请求永久失败时,会显示错误Drawables。错误 如果请求的url / model为null且为no,则还会显示Drawable 后备Drawable已设置
GlideApp.with(fragment)
.load(url)
.error(R.drawable.error)
.into(view);
或
GlideApp.with(fragment)
.load(url)
.error(new ColorDrawable(Color.RED))
.into(view);