Android 图片的一些笔记 ( ScaleType )

614 阅读1分钟

ImageView 的 ScaleType属性

ScaleType是为了解决Bitmap像素尺寸和ImageView宽高的适配
ScaleType分为Fit,Center,Matrix三类:

原图如下

屏幕快照 2022-01-24 下午10.11.45.png

<com.google.android.material.imageview.ShapeableImageView
    app:layout_constraintTop_toBottomOf="@id/iv_a"
    android:layout_margin="20dp"
    android:id="@+id/iv_b"
    app:shapeAppearance="@style/CircleStyle"
    android:background="@color/black"
    android:layout_width="400dp"
    android:layout_height="300dp"
    tools:ignore="MissingConstraints" />
    
//ImageView用Glide加载,为了更好的表现出平铺,重置图片像素为10x10
Glide.with(this)
    .load("https://c-ssl.duitang.com/uploads/item/202003/26/20200326212002_rxlyj.jpeg")
    .override(10,10)
    .into(ivB)
  • Fill 类型: 就是拉伸图片.

ImageView设置scaleType=fill*,可以看出来当像素小于ImageView宽高时,Bitmap被拉伸
fitCenter 居中,纵向拉伸充满宽度
fitStart 从顶部,纵向拉伸充满
fitEnd 从底部,纵向拉伸充满
fitXY ,横纵向拉伸充满宽高
屏幕快照 2022-01-24 下午10.37.39.png 当Glide加载图片不设置override(x,x),显示原像素尺寸,大于ImageView宽高时,Bitmap被”压缩“
屏幕快照 2022-01-24 下午10.56.48.png

  • Center 类型: 就是填充图.
  1. scaleType = centerInside ImageView设置scaleType=centerInside,不像fillCenter属性,Bitmap像素可以被拉伸压缩来充满ImageView宽高,center类型只能在Bitmap尺寸大于ImageView时压缩像素,当Bitmap尺寸小于ImageView,像素是以原分辨率比例,居中显示,这是fillCenter和centerInside的区别

  2. scaleType = center 当ImageView宽高 >= Bitmap尺寸,center和centerInside效果一样
    当ImageView宽高 < Bitmap尺寸,center只是截取居中的像素,分辨率不变,图片被裁剪了

  3. scaleType = centerCrop 不管ImageView宽高与Bitmap的尺寸的大小关系,Bitmap的会根据ImageView宽高缩放,分辨率改变,同时宽高充满ImageView的空间,图片可能有裁剪

一图胜千言-转载自CSDN image.png