ImageView 是 Android 开发中常用控件之一,在设置中经常需要通过 scaleType
来对原始的图像进行处理,使得它能在空间中合理地展示。
做为一个Android 开发工程师,每次用 scaleType 就像玩福不福似的,用不用的对全凭运气,以后要凭本事了!下面就对 scaleType 的属性值使用进行有图有真相的说明。
ScaleType 分类 - 从眼熟到认识
Enum | Description |
---|---|
CENTER | 将图片居中,不执行缩放,如果图片小于视图宽高,会有空白区域,如果图片大,只保留中心部分其他会被裁剪 |
CENTER_CROP | 图片从中心开始等比例缩放,使得图片的宽和高都大于或等于视图的宽高 |
CENTER_INSIDE | 图片等比例缩放,使得宽度和高度都等于或小于视图的宽高 |
FIT_START | 图片等比例缩放,将图片放置到视图的左上角,然后进行向外按比例放大或者缩小,直到一个方向已到视图边界 |
FIT_CENTER | 图片等比例缩放,将图片放置到视图中心,进行向外按比例放大或者缩小,直到一个方向已到视图边界 |
FIT_END | 图片等比例缩放,将图片放置到视图的右下角,然后进行向外按比例放大或者缩小,直到一个方向已到视图边界 |
FIT_XY | 独立缩放宽和高,使其与视图宽高一致,可能会改变图片宽高比 |
MATRIX | 绘制时,使用图像矩阵进行缩放 |
实战 - 从认识到熟识
以上对常用的 scaleType
的属性值做了一个简短的记录,也是便于以后能更准确的使用属性。
官方文档在centerCrop
和centerInside
都有描述(minus padding),在实际使用过程中,除了center
的padding
是无效的,其他都是有效的。若同时使用center
和padding
属性,那么在加上下面属性即可。
android:cropToPadding="true"
图一加上 android:padding="20dp"

对于
center
无效,添加 android:cropToPadding 属性后

还有一种属性值 Matrix 没有说明,后续总结。
网友评论