开发中如果使用了CircleImageView等第三方圆形控件,如果你又恰好使用Glide作为加载图片,那么在第一次加载图片的过程中可能会出现只显示占位图,但图片没有显示的问题。以下会介绍几种解决方法。
第一种解决方式是改变Glide显示图片的方式:
Glide.with(this)
.load(url)
.asBitmap()
.centerCrop()
.override(300, 300)
.error(R.mipmap.delete)
.into(new BitmapImageViewTarget(imageView) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory
.create(context.getResources(), resource);
circularBitmapDrawable.setCircular(true);
imageView.setImageDrawable(circularBitmapDrawable);
}
});
第二种就是使用系统自带的ImageView代替第三方的CircleImageView,圆形图片的处理交给Glide处理。
public static void loadCircleImage(Context context, ImageView imageView, String url) {
ImageLoadConfig circleImageConfig = new ImageLoadConfig.Builder()
.setAsBitmap(true)
.setErrorResId(R.drawable.ic_def_user)
.setCrossFade(true)
.setCropCircle(true)
.build();
Glide.with(context).load(url).apply(circleImageConfig).into(imageView);
}