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

素颜马尾好姑娘i 2022-07-14 01:50 266阅读 0赞

由于在网上下载的图片的尺寸很多时候都会比较大,当转成Bitmap之后载入图片的时候,虽然图片是自己变小了,但是,有很多的时候,ImageView中会出现上下两层的空白,会使得图片像汉堡一样,设置ImageView:wrap_content也是没用的,原因是,wrap_content是根据图片的尺寸,图片尺寸比手机尺寸大,所以宽度已经出屏幕了,虽然真正的显示的图片没有出屏幕,但是Imageview的宽度就出去了,所以Imamgeview的宽度也跟着变高了,所以才会出现上下两层空白。

解决方法:

1.先在布局文件设置一下,scaleType使图片到时候出现在左上角。

  1. <ImageView
  2. android:id="@+id/image"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:background="@color/colorPrimary"
  6. android:scaleType="fitStart"
  7. />

2.

先获取手机和图片的屏幕大小,再作出比较,有需要的时候就缩小比例,Matrix用来缩小图片的比例,之后就重新生成一个宽高合适的Bitmap。

  1. DisplayMetrics dm = new DisplayMetrics();
  2. //获取屏幕信息
  3. getWindowManager().getDefaultDisplay().getMetrics(dm);
  4. int screenWidth = dm.widthPixels;
  5. int screenHeigh = dm.heightPixels;
  6. Bitmap bitmap= BitmapFactory.decodeFile("/storage/emulated/0/Download/66d016323c.jpg");
  7. int x = bitmap.getWidth();
  8. int y = bitmap.getHeight();
  9. float num = 1;
  10. for(int i=0;i<4;i++){
  11. if(x>screenWidth||y>screenHeigh){
  12. x = x/2;
  13. y = y/2;
  14. num = num/2;
  15. }
  16. }
  17. Matrix matrix = new Matrix();
  18. matrix.postScale(num,num);
  19. Bitmap bitmap1 =Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
  20. image.setImageBitmap(bitmap1);

发表评论

表情:
评论列表 (有 0 条评论,266人围观)

还没有评论,来说两句吧...

相关阅读

    相关 图片

    有时候在一个界面上需要加载很多的图片,为了提升用户体验,使网页响应速度快,我们有时候会对图片进行相应的处理。处理方法分为:预加载和懒加载。 一:懒加载 1、懒加载定义:也就

    相关 图片

    图片懒加载 网页上图片点到哪里图片就加载到哪里,不用一次性加载完成 html主要页面 直接引入js文件,src改成data-src就可以直接进行图片的懒加载