ImagView加载图片出现图片的上下方有空白位置
由于在网上下载的图片的尺寸很多时候都会比较大,当转成Bitmap之后载入图片的时候,虽然图片是自己变小了,但是,有很多的时候,ImageView中会出现上下两层的空白,会使得图片像汉堡一样,设置ImageView:wrap_content也是没用的,原因是,wrap_content是根据图片的尺寸,图片尺寸比手机尺寸大,所以宽度已经出屏幕了,虽然真正的显示的图片没有出屏幕,但是Imageview的宽度就出去了,所以Imamgeview的宽度也跟着变高了,所以才会出现上下两层空白。
解决方法:
1.先在布局文件设置一下,scaleType使图片到时候出现在左上角。
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:scaleType="fitStart"
/>
2.
先获取手机和图片的屏幕大小,再作出比较,有需要的时候就缩小比例,Matrix用来缩小图片的比例,之后就重新生成一个宽高合适的Bitmap。
DisplayMetrics dm = new DisplayMetrics();
//获取屏幕信息
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeigh = dm.heightPixels;
Bitmap bitmap= BitmapFactory.decodeFile("/storage/emulated/0/Download/66d016323c.jpg");
int x = bitmap.getWidth();
int y = bitmap.getHeight();
float num = 1;
for(int i=0;i<4;i++){
if(x>screenWidth||y>screenHeigh){
x = x/2;
y = y/2;
num = num/2;
}
}
Matrix matrix = new Matrix();
matrix.postScale(num,num);
Bitmap bitmap1 =Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
image.setImageBitmap(bitmap1);
还没有评论,来说两句吧...