ImageView 的scaleType属性。

来源:互联网 发布:rpg网游 知乎 编辑:程序博客网 时间:2024/04/29 23:59

ImageView可以设置src和background属性,只有设置了“前景图”src,设置的scalType属性才会生效。

imageView的scaleType可以取到8个数值:

 CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示 CENTER_CROP / centerCrop  按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽) CENTER_INSIDE / centerInside  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽 FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示 FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置 FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置 FIT_XY / fitXY  把图片不按比例扩大/缩小到View的大小显示 MATRIX / matrix 用矩阵来绘制

可以分为三类:center打头的属性、fit打头的属性、矩阵属性

一:center属性

(1 )center属性效果图(红色为imageView 背景,绿色图片为src,白色为ImageView所在父控件,下同):

 CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示


 图一:图片宽高小于imageView 宽高,原尺寸居中显示



图二:图片宽大于ImageView 宽度,截取到imageView宽度居中显示。

(2)centerCrop属性效果图

CENTER_CROP / centerCrop  按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)



图三:图片拉伸宽高,占据了整个imageView,并覆盖掉了红色背景色

(3)centerInside属性效果图

CENTER_INSIDE / centerInside  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽



图四:图片整个居中显示在imageView中,由于图片宽高小于imageView宽高,所以无需压缩宽高



图五:调整imageView宽高,由于是centerInside属性,要整个居中显示在imageView中,而图片宽大于iamgeView宽度,所以要等比例压缩图片宽高。

二:fit属性:

(1)fitCenter属性效果图:

FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示


图六:图片宽度<imageView宽度,等比例拉伸到imageView宽时,居中显示。

(2)fitStart属性效果图:

FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置


图七:图片宽度小于imageView宽度,等比例拉伸到imageView宽时,显示在imageView顶部。

(3)fitEnd属性效果图:

FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置


图八:图片宽度小于imageView宽度,等比例拉伸到imageView宽时,显示在imageView底部。

(4)fitXY属性效果图


FIT_XY / fitXY  把图片不按比例扩大/缩小到View的大小显示


图九:不等比例拉伸宽高,填充ImageView

(三)Matrix属性

MATRIX / matrix 用矩阵来绘制
使用这种类型的属性后,图片在imageView中位置受到所设置矩阵属性影响

 <ImageView                android:id="@+id/image8"                android:layout_width="250dp"                android:layout_height="250dp"                android:layout_marginTop="10dp"                android:background="#ff0000"                android:scaleType="matrix"                android:src="@drawable/image" />


图十:在布局文件中设置matrix属性后,默认效果图

Matrix matrix = new Matrix();matrix.postTranslate(20, 0);imageView8.setImageMatrix(matrix);


图十一:矩阵设置平移20像素后,设置给imageView后,效果图。

matrix.postTranslate(20, 0);matrix.postRotate(15);imageView8.setImageMatrix(matrix);


图十二:矩阵设置平移20像素,旋转15度后设置给imageView后效果图
tip:如果ImageView在设置图片资源(src)属性后,并没有指明scaleType类型,scaleType默认值为:centerInside

    如果ImageView设置的scaleType属性不是matrix,在代码中调用imageView.setImageMatrix(matrix)无效。

0 0