在StackOverflow上找到的办法:Glide: load drawable but don't scale placeholder。
Glide.with(context)
.load(product.getImageUrl())
.placeholder(R.mipmap.img_scp_product_default)
.error(R.mipmap.img_scp_product_default)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target,
boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model,
Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
// 在更新网络图片后会导致图片按占位符的比例缩放,只有重新加载后图片才正常显示
// 这里通过移除占位符后再重新加载图片实现图片按比例显示,但是会导致短暂的闪烁
productHolder.imgProduct.setImageResource(0);
return false;
}
})
.into(productHolder.imgProduct);
通过设置请求结果的监听,在得到请求结果后移除占位图,这样图片就能按本身的尺寸加载。
这会导致的问题是在移除和加载网络图片之间会有短暂的闪烁,设置淡入淡出动画没有效果,后面会尝试添加自定义动画看是否能避免闪烁。