Glide 在 onLoadFailed() 时使用默认图片
Glide use default image when onLoadFailed()
我用的是glide 4.7.1版本
我想在 onLoadFailed 时使用默认图像。
这是我的代码
Glide.with(context).load(imageUrl).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, com.bumptech.glide.request.target.Target<Drawable> target, boolean isFirstResource) {
// fail
// How can i use default image in imgvAssetPicture?
}
@Override
public boolean onResourceReady(Drawable resource, Object model, com.bumptech.glide.request.target.Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
// success
imgvLoadingProgressbar.setVisibility(View.INVISIBLE);
imgvAssetPicture.setVisibility(View.VISIBLE);
return false;
}
}).into(imgvAssetPicture);
Glide.with(passContext)
.applyDefaultRequestOptions(new RequestOptions()
.placeholder(R.drawable.ic_user_default)
.error(R.drawable.ic_user_default))
.load(url)
.into(image);
使用 4.7.1 版本(您正在使用),您可以轻松设置这些选项。
placeHolder
无图像时显示
error
当某些 URL 加载失败时。
奖金
您是否使用一些 ProgressBar
设置可见性,这是非常古老的做法。
见 CircularProgressDrawable,非常好用。只需将此 CircularProgressDrawable
传递到您的 placeHolder
.
只需将这行代码复制并粘贴到您想使用的任何地方
简单易行
val circularProgressDrawable = CircularProgressDrawable(mContext)
circularProgressDrawable.strokeWidth = 5f
circularProgressDrawable.centerRadius = 30f
circularProgressDrawable.start()
Glide.with(mContext)
.load(specificCategoryObject.imgUrl)
.placeholder(R.drawable.circularProgressDrawable)
.transition(DrawableTransitionOptions.withCrossFade())
.error(R.drawable.img_place_holder)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>?,
isFirstResource: Boolean
): Boolean {
circularProgressDrawable.alpha = 0
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<Drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean,
): Boolean {
circularProgressDrawable.alpha = 0
return false
}
})
.into(holder.ivProductImage)
我用的是glide 4.7.1版本 我想在 onLoadFailed 时使用默认图像。
这是我的代码
Glide.with(context).load(imageUrl).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, com.bumptech.glide.request.target.Target<Drawable> target, boolean isFirstResource) {
// fail
// How can i use default image in imgvAssetPicture?
}
@Override
public boolean onResourceReady(Drawable resource, Object model, com.bumptech.glide.request.target.Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
// success
imgvLoadingProgressbar.setVisibility(View.INVISIBLE);
imgvAssetPicture.setVisibility(View.VISIBLE);
return false;
}
}).into(imgvAssetPicture);
Glide.with(passContext)
.applyDefaultRequestOptions(new RequestOptions()
.placeholder(R.drawable.ic_user_default)
.error(R.drawable.ic_user_default))
.load(url)
.into(image);
使用 4.7.1 版本(您正在使用),您可以轻松设置这些选项。
placeHolder
无图像时显示error
当某些 URL 加载失败时。
奖金
您是否使用一些 ProgressBar
设置可见性,这是非常古老的做法。
见 CircularProgressDrawable,非常好用。只需将此 CircularProgressDrawable
传递到您的 placeHolder
.
只需将这行代码复制并粘贴到您想使用的任何地方
简单易行
val circularProgressDrawable = CircularProgressDrawable(mContext)
circularProgressDrawable.strokeWidth = 5f
circularProgressDrawable.centerRadius = 30f
circularProgressDrawable.start()
Glide.with(mContext)
.load(specificCategoryObject.imgUrl)
.placeholder(R.drawable.circularProgressDrawable)
.transition(DrawableTransitionOptions.withCrossFade())
.error(R.drawable.img_place_holder)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>?,
isFirstResource: Boolean
): Boolean {
circularProgressDrawable.alpha = 0
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<Drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean,
): Boolean {
circularProgressDrawable.alpha = 0
return false
}
})
.into(holder.ivProductImage)