问题:使用Glide加载图片时设置centerCrop()或centerInside()等图片加载格式失效。
解决方案:
方法一:设置RequestListener,在onResourceReady()中在给imageview设置图片加载格式。
public static final RequestOptions options = new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.centerCrop()
.placeholder(R.drawable.holder);
Glide.with(context)
.asBitmap()
.load(url)
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target,
boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target,
DataSource dataSource, boolean isFirstResource) {
imageview.setScaleType(ScaleType.CENTER_CROP);
return false;
}
})
.apply(feedOptions)
.transition(options)
.into(imageView);
方法二:自定义BitmapImageViewTarget,在onResourceReady()中给imageView设置图片加载格式,最后江target设置给Glide
public class MyBitmapImageViewTarget extends BitmapImageViewTarget {
public MyBitmapImageViewTarget(ImageView view) {
super(view);
}
@Override
public void onResourceReady(Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
super.onResourceReady(resource, transition);
if (resource != null && view.getScaleType() != ScaleType.CENTER_CROP) {
view.setScaleType(ScaleType.CENTER_CROP);
}
}
}
网友评论