需求:加载一张网络图片,宽度充满屏幕高度按照图片比例进行显示
<ImageView
android:id="@+id/iv_details_pic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:layout_marginTop="@dimen/dp_12" />
Glide.with(GoodsDetailActivity.this)
.asBitmap()
.format(DecodeFormat.PREFER_ARGB_8888)//设置图片解码格式
.load(resultBean.getFileUrl())
.into(ivDetailsPic);
resultBean.getFileUrl():为图片连接地址
ivDetailsPic:为ImageView
加载出来的效果图片有些变形而且比较模糊:
Glide 增加 override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
(如果知道图片大小及比例也可以直接设置override的两个值如:override(1080, 375);)
Glide.with(GoodsDetailActivity.this)
.asBitmap()
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.format(DecodeFormat.PREFER_ARGB_8888)//设置图片解码格式
.load(resultBean.getFileUrl())
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
int height = resource.getHeight();
int width = resource.getWidth();
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) ivDetailsPic.getLayoutParams();
layoutParams.width = UiUtils.getScreenWidth(getApplicationContext());
layoutParams.height = layoutParams.width*height/width;
ivDetailsPic.setLayoutParams(layoutParams);
ivDetailsPic.setImageBitmap(resource);
}
});
override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)保证图片是原图,打印bimap的大小即可以确定加载的图片是否被压缩,加载完成的回调里面根据加载的图片重新设置imageView的宽高。
(也可以直接使用Picasso进行图片加载,可以发现两个加载的图片大小是相同的)