前言
最近在自定义ImageView时用到scaleType属性,因此在这里整(摘)理(抄)一下,方便自己查阅。
好记性不如烂笔头
正文
scaleType该属性指定让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。
Android 提供了八种scaleType的属性值分别如下:
public static enum ScaleType {
MATRIX,
FIT_XY,
FIT_START,
FIT_CENTER,
FIT_END,
CENTER,
CENTER_CROP,
CENTER_INSIDE;
}
PS: xml和java都可以配置ImageView的属性。
下面单独对每一种简单的介绍一下,如果要图解,推荐看文末的第一个参考链接,该作者特意附上了图片描述。感谢。
MATRIX
用矩阵来绘制,可以动态缩放、移动和旋转等操作图片。
这个需要配合setImageMatrix()来使用。
举个例子
imageView.setScaleType(ImageView.ScaleType.MATRIX);
Matrix matrix = new Matrix();
matrix.preRotate(90); //顺时针旋转90
imageView.setImageMatrix(matrix);
FIT_XY
图片缩放并全铺到View上,不是等比缩放。
FIT_START
把图片按比例扩大/缩小到View的高宽上,从左或者上部开始显示。
- 如果图片的宽大于View的宽,就显示在上部。(下部空白)
- 如果图片的高大于View的高,就显示在左部。(右部空白)
FIT_CENTER
这个是ImageView的默认模式。图片会被等比缩放到能够填充控件大小,并居中显示。(存在上下空白)
FIT_END
这个跟FIT_START刚好相反。
把图片按比例扩大/缩小到View的高宽上,从右或者底部开始显示。
- 如果图片的宽大于View的宽,就显示在底部。(上部空白)
- 如果图片的高大于View的高,就显示在右部。(左部空白)
CENTER
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示。
PS:这个会截取中心图片显示。
CENTER_CROP
按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
CENTER_INSIDE
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽,并居中显示。
参考文章
© 版权声明