Android Glide:onError回调

Android Glide:onError回调,android,android-glide,Android,Android Glide,我正从毕加索转到格莱德。除了找不到获取错误回调的方法外,一切正常。我想检索一个位图,传递它并从中生成一个Android调色板。此外,虽然可以为加载调用提供errorDrawable,但在使用SimpleTarget时,它不会显示在onResourceReady中 在毕加索,我是这样做的: target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picas

我正从毕加索转到格莱德。除了找不到获取错误回调的方法外,一切正常。我想检索一个位图,传递它并从中生成一个Android调色板。此外,虽然可以为加载调用提供errorDrawable,但在使用
SimpleTarget
时,它不会显示在
onResourceReady

在毕加索,我是这样做的:

target = new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                //handle Bitmap, generate Palette etc. 
            }

            @Override
            public void onBitmapFailed(final Drawable errorDrawable) {
                // use errorDrawable to generate Palette
            }

            @Override
            public void onPrepareLoad(final Drawable placeHolderDrawable) {
            }
        };
        int width =  (int) DisplayUnitsConverter.dpToPx(this, 120);
        int height =  (int) DisplayUnitsConverter.dpToPx(this, 40);
        Picasso.with(this).load(config.getPathToLogo()).resize(width, height).error(errorDrawableId).into(target);
Glide.with(context)
    .load(config.getPathToLogo())
    .asBitmap()
    .into(new SimpleTarget<Bitmap>(width, height) {
         @Override
         public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
             //handle Bitmap, generate Palette etc. 
         }
    });
我的滑动代码如下所示:

target = new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                //handle Bitmap, generate Palette etc. 
            }

            @Override
            public void onBitmapFailed(final Drawable errorDrawable) {
                // use errorDrawable to generate Palette
            }

            @Override
            public void onPrepareLoad(final Drawable placeHolderDrawable) {
            }
        };
        int width =  (int) DisplayUnitsConverter.dpToPx(this, 120);
        int height =  (int) DisplayUnitsConverter.dpToPx(this, 40);
        Picasso.with(this).load(config.getPathToLogo()).resize(width, height).error(errorDrawableId).into(target);
Glide.with(context)
    .load(config.getPathToLogo())
    .asBitmap()
    .into(new SimpleTarget<Bitmap>(width, height) {
         @Override
         public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
             //handle Bitmap, generate Palette etc. 
         }
    });
Glide.with(上下文)
.load(config.getPathToLogo())
.asBitmap()
.into(新的SimpleTarget(宽度、高度){
@凌驾
public void onResourceReady(位图资源、GlideAnimation){
//处理位图,生成调色板等。
}
});

谢谢。

您使用的是实现接口
目标的
SimpleTarget
,该接口定义了方法
onLoadFailed
,因此您只需执行以下操作:

Glide.with(context)
    .load(config.getPathToLogo())
    .asBitmap()
    .into(new SimpleTarget<Bitmap>(width, height) {
         @Override
         public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
             //handle Bitmap, generate Palette etc. 
         }

         @Override
         public void onLoadFailed(Exception e, Drawable errorDrawable) {
             // Do something.
         }
    });
Glide.with(上下文)
.load(config.getPathToLogo())
.asBitmap()
.into(新的SimpleTarget(宽度、高度){
@凌驾
public void onResourceReady(位图资源、GlideAnimation){
//处理位图,生成调色板等。
}
@凌驾
public void onload失败(异常e,可提取错误可提取){
//做点什么。
}
});

对于每个有相同问题的人,您需要使用侦听器方法。例如:

   Glide.with(activity)
            .load(getPhoto().getUrl())
            .apply(
                    new RequestOptions()
                            .error(R.drawable.icon_placeholder)
                            .centerCrop()
            )
            .listener(new RequestListener<Drawable>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                 //on load failed
                    return false;
                }

                @Override
                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                    //on load success
                    return false;
                }
            })
            .transition(withCrossFade())
            .into(view);
Glide.with(活动)
.load(getPhoto().getUrl())
.申请(
新的请求选项()
.错误(R.drawable.icon\u占位符)
.centerCrop()
)
.listener(新的RequestListener(){
@凌驾
public boolean onload失败(@Nullable glide,对象模型,目标,boolean isFirstResource){
//加载失败
返回false;
}
@凌驾
公共布尔onResourceReady(可绘制资源、对象模型、目标、数据源数据源、布尔isFirstResource){
//加载成功
返回false;
}
})
.transition(使用CrossFade())
.进入(视野);

这个解释应该成为默认git自述部分的一部分,因为“onLoadFailed”是一个基本的错误处理。谢谢也许你用的是4.0.0-RC0?试试3.8.0INTEAD。