Glide占位符矢量可绘制资源未找到异常

时间:2016-05-18 11:32:06

标签: android android-glide android-vectordrawable

最近我想在我的工作中添加Vector Drawable。我正在使用滑行设置我的drawables。这是我的代码:

Glide
                .with(mContext)
                .load(resDrawable)
                .placeholder(placeHolderResDrawable)
                .centerCrop()
                .bitmapTransform(new CropCircleTransformation(MyLruBitmapPool.getInstance()))
                .into(imgRoundedView);

我将vector drawable添加到resDrawableplaceHolderResDrawable。它在 Lolipop 设备中运行良好。但是当我在 less than lolipop 中测试它时,它比崩溃了。在尝试将drawable放入placeholder时,它会Resources$NotFoundException

以下是崩溃报告:

  

android.content.res.Resources $ NotFoundException:来自可绘制资源ID的文件res / drawable / default_round_profile.xml#0x7f02013d                                                                               在android.content.res.Resources.loadDrawable(Resources.java:3451)                                                                               在android.content.res.Resources.getDrawable(Resources.java:1894)                                                                               在com.bumptech.glide.request.GenericRequest.getPlaceholderDrawable(GenericRequest.java:395)                                                                               在com.bumptech.glide.request.GenericRequest.begin(GenericRequest.java:265)                                                                               在com.bumptech.glide.manager.RequestTracker.runRequest(RequestTracker.java:36)                                                                               在com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:616)                                                                               在com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:652)                                                                               在com.bumptech.glide.DrawableRequestBuilder.into(DrawableRequestBuilder.java:436)

1 个答案:

答案 0 :(得分:13)

尝试使用ContextCompat获取drawable并将其设置为占位符:

ContextCompat.getDrawable(mContext, placeHolderResDrawable);

所以它会是:

Glide.with(mContext)
     .load(resDrawable)
     .placeholder(ContextCompat.getDrawable(mContext, placeHolderResDrawable))
     .centerCrop()
     .bitmapTransform(new CropCircleTransformation(MyLruBitmapPool.getInstance()))
     .into(imgRoundedView);

Glide v4更新:

Glide.with(mContext)
     .load(resDrawable)
     .apply(new RequestOptions()
         .placeholder(ContextCompat.getDrawable(mContext, placeHolderResDrawable))
         .centerCrop()
         .transform(new CropCircleTransformation(MyLruBitmapPool.getInstance())))
     .into(imgRoundedView);