Android Glide 4.3.1:如何使用error()?
首先,Glide和GlideApp的区别是什么?后者似乎是自动生成的,但步骤似乎很复杂,所以我使用了Glide。他们似乎都有相同的方法 因此,我使用了Android Glide 4.3.1:如何使用error()?,android,kotlin,android-glide,Android,Kotlin,Android Glide,首先,Glide和GlideApp的区别是什么?后者似乎是自动生成的,但步骤似乎很复杂,所以我使用了Glide。他们似乎都有相同的方法 因此,我使用了Glide.with(activity).load(fileName).error().into(imageView)。问题是我无法理解传递给error()的内容。它没有获取可绘制的资源ID。Android Studio说参数是RequestBuilder?,但我找不到任何例子 “错误:类型不匹配:推断类型为Int,但应为RequestBuilde
Glide.with(activity).load(fileName).error().into(imageView)
。问题是我无法理解传递给error()的内容。它没有获取可绘制的资源ID。Android Studio说参数是RequestBuilder“错误:类型不匹配:推断类型为Int,但应为RequestBuilder
Glide.with(mContext).load(myModel.getDefaultThumbnailUrl()).dontAnimate().centerCrop().override(mImageSize, mImageSize).into(itemViewHolder.imgHolder);
此外,如果您希望在glide上回调已发生或已完成的错误,您可以创建如下侦听器
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;
}
};
RequestListener glideCallback=newrequestlistener(){
@凌驾
公共布尔onException(异常e、字符串模型、目标、布尔isFirstResource){
Toast.makeText(myActivity.this、getString(R.string.error_loading_from_url)、Toast.LENGTH_LONG.show();
返回false;
}
@凌驾
公共布尔值onResourceReady(GlideDrawable资源、字符串模型、目标、布尔值isFromMemoryCache、布尔值isFirstResource){
new Handler().postDelayed(new Runnable()){
@凌驾
公开募捐{
convertCardToBitmap(完成时的mSendWhenComplete);
}
},500);
返回false;
}
};
然后将.listener(glideCallback)包含在链式加载调用中
错误重载包括:
您在
error()中指定了一个可绘制的,如果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);
}
});
error():当请求永久失败时,将显示错误提取表。错误
如果请求的url/模型为null且为no,则也会显示Drawables
设置了可回退的回撤
或
如果您使用的是Glidev4,那么您必须使用RequestOptions来包含更多您想要的选项,例如
中心裁剪(),占位符(),错误(),优先级(),磁盘缓存策略()
所以在使用RequestOptions之后,你的滑翔看起来是这样的-
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也是GlideV4的一部分。它用于在Glide v4中使用transforms()方法提供多个转换:
使用GlideApp时出现错误()和占位符()
GlideApp.with(mContext)
.load(imageUrl)
.placeholder(R.drawable.placeholder_image)
.error(R.drawable.error_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.into(offerImage);
要回答第二个问题(也是标题的一部分),如果您希望调用的url或drawable/bitmap为空,并且您可能希望调用重试,那么您只需要关心error()
,否则,您可以使用错误
drawable来表示与占位符
或回退
不同的状态。下表非常直接地解释了这一点:
不幸的是,我记不起图像的原始来源。请让我在评论中知道,如果你知道的话,这样我就可以正确地把它归于原作者
正如您从上面的图表中所看到的,如果您不想为每个状态表示不同的状态,那么只设置一个占位符就足够了
希望决策树能解决您的一些问题!很抱歉,我没有回答你问题的所有部分,但其他一些答案已经回答了
干杯 是的,但是如果获取图像失败,我想显示一个错误图像。web上的所有示例都将资源ID传递给error(),但这些示例要么是Glide的旧版本,要么是GlideApp(不是Glide)。@DamnVegetables请参见上面的屏幕截图。我使用的是3.7.0 Glide。如果你想做一些更自定义的事情,请参阅我的回调示例,了解一些失败的事情。啊。非常感谢。我想知道为什么当我在谷歌搜索一个使用示例时,这样的示例没有出现。如果glide无法加载图像,那么如何重新加载相同的URL来显示图像?
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.with(mContext)
.load(imgUrl)
.transforms(new CenterCrop(), new RoundedCorners(20))
.into(target);
GlideApp.with(mContext)
.load(imageUrl)
.placeholder(R.drawable.placeholder_image)
.error(R.drawable.error_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.into(offerImage);