ImageView是Android 中图片加载显示最常用的控件之一,而scaleType属性就决定图片的显示属性,比如是否进行缩放、等比缩放、缩放后展示位置等。Android 提供了八种scaleType的属性值,每种都对应了一种展示方式。
ScaleType可大体分为三类:
(1) 以fit_开头的4种,共同点是都会对图片进行缩放;
(2) 以center_开头的3种,共同点是居中显示,图片的中心点会与ImageView的中心点重叠;
(3) ScaleType.MATRIX,就是最简单的显示;
1、android:scaleType=“matrix”
表示不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理。 ---没有缩放,只从图片左上角开始绘制,ImageView控件尺寸显示范围内保存超过部分剪切
2、android:scaleType=“center”
(1)当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按照图片的原大小居中显示,不缩放,用ImageView的大小截取图片的居中部分。---没有缩放,中心点和ImageVIew控件对齐
(2)当图片小于ImageView的宽高:直接居中显示该图片。
3、android:scaleType=“centerCrop”
(1)当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按比例缩小图片,直到图片的宽高有一边等于ImageView的宽高,则对于另一边,图片的长度大于或等于ImageView的长 度,最后用ImageView的大小居中截取该图片。
(2)当图片小于ImageView的宽高:以图片的中心店和ImageView的中心点为基准,按比例扩大图片,直到图片的宽高大于或等于ImageView的宽高,并按ImageView的大小居中截取该图片。
4、android:scaleType=“centerInside”
(1)当图片大于ImageView的宽高:以图片的中心和ImageView的中心点为基准,按比例缩小图片,使图片宽高等于或者小于ImagevView的宽高,直到将图片的内容完整居中显示。
(2)当图片小于ImageView的宽高:直接居中显示该图片。
5、android:scaleType=“fitXY”
表示把图片按指定的大小在ImageView中显示,拉伸或收缩图片,不保持原比例,填满ImageView。
6、android:scaleType=“fitStart”
表示把图片按比例扩大(缩小)到ImageView的宽度,在ImageView的上方显示。
7、android:scaleType=“fitCenter”
表示把图片按比例扩大(缩小)到ImageView的宽度,居中显示。
8、android:scaleType=“fitEnd”
表示把图片按比例扩大(缩小)到ImageView的宽度,在ImageView的下方显示。
属性 | 缩放 | 裁切 | 对齐位置 | 一定铺满ImageView | 拉伸变形 | 大图片 | 小图片 |
center | 无 | 有(大图超过IV宽高部分裁切) | IV中心点 | 否(小图片:四周可能留白) | 否 | 图片中心点和IV对齐,不缩放,超过IV大小区域裁切掉 | 图片中心点和IV对齐,不缩放,四周可能留白 |
centerCrop | 有(大图缩小; 小图放大) | 有(大图缩小到有一边和IV对齐,另一边裁切;小图放大两边都大等于IV,大的一边裁切掉) | IV中心点 | 是 | 否 | 图片中心点和IV对齐,缩小,直到图片宽高一边等于IV的宽高,另一边超过IV部分裁切掉 | 图片中心点和IV对齐,放大,直到图片宽高都大等于IV宽高,另一边超过IV部分裁切掉 |
centerInside | 有(大图缩小; 小图原图) | 无 | IV中心点 | 否(顶部、顶部可能留白) | 否 | 图片中心点和IV对齐,缩小,直到图片宽高都小于IV宽高 | 图片中心点和IV对齐,原图 |
fitXY | 有 | 无(图片被拉伸变形) | IV左上角 | 是 | 是 | 拉伸变形 | 拉伸变形 |
fitStart | 有 | 无 | IV顶边 | 否(中部、底部可能留白) | 否 | 缩小图片直到宽度和IV对齐,高度忽略 | 放大图片直到宽度和IV对齐,高度忽略 |
fitCenter | 有 | 无 | IV中线 | 否(顶部、底部可能留白) | 否 | ||
fitEnd | 有 | 无 | IV底边 | 否(顶部、中部可能留白) | 否 | ||
fitStart | 有 | 无 | IV左边 | 否(中部、右边可能留白) | 否 | 缩小图片直到高度和IV对齐,宽度忽略--竖图(宽高比小于1的图片) | 放大图片直到高度和IV对齐,宽度忽略--竖图(宽高比小于1的图片) |
fitCenter | 有 | 无 | IV中线 | 否(左边、右边可能留白) | 否 | ||
fitEnd | 有 | 无 | IV右边 | 否(左边、中部可能留白) | 否 | ||
matrix | 无 | 有 | IV左上角 | 否(小图片可能四周留白) | 否 | 图片左上角和IV左上角对齐,不缩放,超过部分自动裁剪, | 图片左上角和IV左上角对齐,不缩放,有空白 |
陪图说明
原图:
尺寸:50*50
尺寸:950*633