如果想快速决定用哪个值好,那直接跳到后面的总结吧。
ImageView 共有7种 scaleType。
FIT_
开头的4种,共同点是都会对图片进行缩放(只有fitXY不等比缩放);CENTER_
开头的3种,共同点是居中显示,图片的中心点与ImageView
的中心点重叠;MATRIX
;下面一个个讲解。
ImageView
的中心点重叠。
若图片宽高小于控件宽高,则图片只会显示中间部分,即周围会被裁剪。也就是无论如何图片的大小都不会改变,控件大小决定可见范围。
如左图图片小于ImageView,则能够完全显示;右图图片大于ImageView,只能显示中间的一部分。而图片的显示尺寸并没有变化,只不过显示不全而已。
(注意这里图片背景为灰色,图片白色部分不属于ImageView,即ImageView已被图片占满。
需要与ImageView.setImageMatrix(Matrix matrix)
配合使用,指定一个变换矩阵用于指定图片如何展示。
如:
imageView.setScaleType(ImageView.ScaleType.MATRIX); //设置为矩阵模式
Matrix matrix = new Matrix(); //创建一个单位矩阵
matrix.setTranslate(50, 50); //平移x和y各50单位
matrix.preRotate(40); //顺时针旋转40度
imageView.setImageMatrix(matrix); //设置并应用矩阵
fitCenter
、 fitStart
、fitCenter
(选哪个取决于要怎么对齐了,一般是用fitCenter吧,没有设置的时候默认值就是fitCenter)centerCrop
centerInside
center
matrix
可见显示的需求主要是根据是否按比例,图片是否要充满控件这两个因素决定的。就个人使用来说,觉得最常用的就是fitCenter(默认值),因为能够按比例且完整显示,又能在某个方向撑满控件;当希望控件被图片占满时(图片可以被适当裁剪),比较常用的就是centerCrop,因为可以保证图片按比例显示。