当前位置: 代码迷 >> 综合 >> ImagView加载图片出现图片的上下方有空白位置
  详细解决方案

ImagView加载图片出现图片的上下方有空白位置

热度:67   发布时间:2023-10-18 01:46:41.0



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








  相关解决方案