最近在使用Glide的过程中遇到了一个Bug:
我在使用填充图片setPlaceHolder(int resID)的时候发现,如果加载Glide时调用了动态调整填充样式的方法setCenterCrop()或setFitCenter(),这两个方法会不起作用.
观察Glide源码,发现setCenterCrop()与setFitCenter()起作用的原理是调用了transform()方法:
public GenericRequestBuilder<ModelType, DataType, ResourceType, TranscodeType> transform(
Transformation<ResourceType>... transformations) {
isTransformationSet = true;
if (transformations.length == 1) {
transformation = transformations[0];
} else {
transformation = new MultiTransformation<ResourceType>(transformations);
}
return this;
}
而调用setPlaceHolder(int resID)时Builder的isTransformationSet会改变为false,导致图片变形失败.
解决方法:在xml中设置ImageView的scaleType为centerCrop,可暂时解决,如果要根本解决问题,要修改Glide源码,目前Glide3.7.0没有修复这个问题.
网友评论