ImageView的ScaleType属性到底怎么用?

2019-06-04  本文已影响0人  tingtingtina

ImageView 是 Android 开发中常用控件之一,在设置中经常需要通过 scaleType来对原始的图像进行处理,使得它能在空间中合理地展示。

做为一个Android 开发工程师,每次用 scaleType 就像玩福不福似的,用不用的对全凭运气,以后要凭本事了!下面就对 scaleType 的属性值使用进行有图有真相的说明。

ScaleType 分类 - 从眼熟到认识

Enum Description
CENTER 将图片居中,不执行缩放,如果图片小于视图宽高,会有空白区域,如果图片大,只保留中心部分其他会被裁剪
CENTER_CROP 图片从中心开始等比例缩放,使得图片的宽和高都大于或等于视图的宽高
CENTER_INSIDE 图片等比例缩放,使得宽度和高度都等于或小于视图的宽高
FIT_START 图片等比例缩放,将图片放置到视图的左上角,然后进行向外按比例放大或者缩小,直到一个方向已到视图边界
FIT_CENTER 图片等比例缩放,将图片放置到视图中心,进行向外按比例放大或者缩小,直到一个方向已到视图边界
FIT_END 图片等比例缩放,将图片放置到视图的右下角,然后进行向外按比例放大或者缩小,直到一个方向已到视图边界
FIT_XY 独立缩放宽和高,使其与视图宽高一致,可能会改变图片宽高比
MATRIX 绘制时,使用图像矩阵进行缩放

实战 - 从认识到熟识

ImageView比实际尺寸小时 ​ ImageView比实际尺寸大时

以上对常用的 scaleType 的属性值做了一个简短的记录,也是便于以后能更准确的使用属性。

官方文档在centerCropcenterInside都有描述(minus padding),在实际使用过程中,除了centerpadding是无效的,其他都是有效的。若同时使用centerpadding属性,那么在加上下面属性即可。

android:cropToPadding="true"

图一加上 android:padding="20dp"

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

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

上一篇下一篇

猜你喜欢

热点阅读