public class GlideUtils {
public static void loadIntoUseFitWidth(Context context, final String imageUrl, int errorImageId, final ImageView imageView) {
Glide.with(context)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.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) {
if (imageView == null) {
return false;
}
if (imageView.getScaleType() != ImageView.ScaleType.FIT_XY) {
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
}
ViewGroup.LayoutParams params = imageView.getLayoutParams();
int vw = imageView.getWidth() - imageView.getPaddingLeft() - imageView.getPaddingRight();
//float scale = (float) vw / (float) resource.getIntrinsicWidth();
int vh = (int) ((float)vw/(float) 1.78);
params.height = vh + imageView.getPaddingTop() + imageView.getPaddingBottom();
imageView.setLayoutParams(params);
return false;
}
})
.placeholder(errorImageId)
.error(errorImageId)
.into(imageView);
}
}
1、整体思路就是通过获取平路的宽度,通过服务器图片的宽高比,我们服务器的是16:9,所以设置的是1.78
2、最后把宽高给imageView去展示
3、如果觉得这个宽高比不适合,也可以在方法多加一个参数就可以了,通过调用动态设置也是ok的。
版权声明:本文为qq939782569原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。