這里只要給定需要顯示圖片imageView的寬度 ,則可以通過保持圖片的長寬比例不變的方式來自動修改imageView的高度來完全顯示圖片肃叶。
public static voidloadIntoUseFitWidth(Context context,final String imageUrl,int errorImageId,final ImageView imageView) {
//我這里是先獲取屏幕的寬高蹂随,然后把屏幕的寬設(shè)為imageView的寬。
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
ViewGroup.LayoutParams params = imageView.getLayoutParams();
params.width= width;
imageView.setLayoutParams(params);
//glide是在listener()方法中傳入一個(gè)RequestListener來設(shè)置當(dāng)圖片資源準(zhǔn)備好了以后自定義的操作的因惭。
Glide.with(context)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(new RequestListener() {
@Override
public boolean onException(Exception e, String model, Target target,booleanisFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target target,boolean isFromMemoryCache,boolean isFirstResource) {
if(imageView==null) {
return false;
}
//首先設(shè)置imageView的ScaleType屬性為ScaleType.FIT_XY岳锁,讓圖片不按比例縮放,把圖片塞滿整個(gè)View蹦魔。
if(imageView.getScaleType() != ImageView.ScaleType.FIT_XY) {
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
}
//得到當(dāng)前imageView的寬度(我設(shè)置的是屏幕寬度)激率,獲取到imageView與圖片寬的比例,然后通過這個(gè)比例去設(shè)置imageView的高
ViewGroup.LayoutParams params =imageView.getLayoutParams();
int vw =imageView.getWidth() -imageView.getPaddingLeft() -imageView.getPaddingRight();
float scale = (float) vw / (float) resource.getIntrinsicWidth();
int vh = Math.round(resource.getIntrinsicHeight() * scale);
params.height= vh +imageView.getPaddingTop() +imageView.getPaddingBottom();
imageView.setLayoutParams(params);
return false;
}
})
.placeholder(errorImageId)
.error(errorImageId)
.into(imageView);
}