在RecyclerView中使用Glide和CircleImageView加载圆形图片时出现图片错乱
在Glide加载图片到CircleImageView时, 如果设置了placeholder的话,可能会出现问题. 于是可以采用以下的方式加载圆形图片.
Glide.with(context).load(item.pictureUrl).asBitmap().placeholder(R.drawable.default_logo).error(R.drawable.default_logo).into(new SimpleTarget<Bitmap> (DeviceUtils.dp2px(context, 36), DeviceUtils.dp2px(context, 36)) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
holder.imageView.setImageBitmap(resource);
}
});
但是如果是在RecyclerView的适配器中这样使用可能会引起图片错乱.
解决的办法还是使用setTag()和getTag().
String tag = (String) holder.imageView.getTag();
if (!TextUtils.equals(item.pictureUrl, tag)) {
holder.imageView.setImageResource(R.drawable.default_logo);
}
Glide.with(context).load(item.pictureUrl).asBitmap().placeholder(R.drawable.default_logo)
.error(R.drawable.default_logo).into(new SimpleTarget<Bitmap>
(DeviceUtils.dp2px(context, 36), DeviceUtils.dp2px(context, 36)) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap>
glideAnimation) {
holder.imageView.setTag(item.pictureUrl);
holder.imageView.setImageBitmap(resource);
}
});