ImageView 的 ScaleType属性
ScaleType是为了解决Bitmap像素尺寸和ImageView宽高的适配
ScaleType分为Fit,Center,Matrix三类:
原图如下
<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 ,横纵向拉伸充满宽高
当Glide加载图片不设置override(x,x),显示原像素尺寸,大于ImageView宽高时,Bitmap被”压缩“
- Center 类型: 就是填充图.
-
scaleType = centerInside ImageView设置scaleType=centerInside,不像fillCenter属性,Bitmap像素可以被拉伸压缩来充满ImageView宽高,center类型只能在Bitmap尺寸大于ImageView时压缩像素,当Bitmap尺寸小于ImageView,像素是以原分辨率比例,居中显示,这是fillCenter和centerInside的区别
-
scaleType = center 当ImageView宽高 >= Bitmap尺寸,center和centerInside效果一样
当ImageView宽高 < Bitmap尺寸,center只是截取居中的像素,分辨率不变,图片被裁剪了 -
scaleType = centerCrop 不管ImageView宽高与Bitmap的尺寸的大小关系,Bitmap的会根据ImageView宽高缩放,分辨率改变,同时宽高充满ImageView的空间,图片可能有裁剪