由于在网上下载的图片的尺寸很多时候都会比较大,当转成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);