1、简述
ImageView的ScaleType属性一共有八种类型。
MATRIX (0),
FIT_XY (1),
FIT_START (2),
FIT_CENTER (3),
FIT_END (4),
CENTER (5),
CENTER_CROP (6),
CENTER_INSIDE (7);
每种类型的属性表示图片在ImageView视图上的一种展示方式。
原图的尺寸:宽300px,高187px
我们通过三个ImageView展示,设置三个固定大小,宽x高:
- 60dpx30dp
- 200dpx150dp
- 200dpx30dp
2、属性详解
2.1、fitXY
图片根据ImageView的大小去缩放,占满整个ImageView,如果图片的比例和ImageView的比例不同,会导致图片变形。

总结:不关心图片的大小,缩放后的图片大小和ImageView宽高相等,不裁剪,会拉伸
2.2、fitCenter
ImageView大小固定,图片适配ImageView,图片按照ImageView的大小缩放,直到宽高一方或全部和ImageView的宽高相等,图片完全在ImageView内部。位于ImageView中间。

总结:图片完全按照ImageView的宽高进行缩放,完全在ImageView的内部,有一项紧贴着ImageView,不裁剪,不拉伸
2.3、fitEnd和fitStart
和fitCenter一样,只不过缩放后的图片布局中。


2.4、center
ImageView大小固定,按照图片的宽高展示,不进行缩放,如果展示不下就进行裁剪,将图片和ImageView的交集展示出来。

2.5、centerCrop
ImageView的大小固定,图片适配ImageView,图片按照ImageView大小进行缩放,直到有一边或全部和ImageView的宽高相等,需要图片的宽高全部大于等于ImageView的宽高。

总结:根据图片适配ImageView,在缩放时需要保证图片的宽、高都不比ImageView的宽高小,并且有一项紧贴着ImageView,裁剪,不拉伸。
2.6、centerInside
Imageview大小固定,图片根据ImageView的大小进行缩小操作(无扩大),保证图片的宽高都不大于ImageView的宽高,图片宽高小于ImageView时图片大小保持不变,放大时有一项紧贴ImageView,不裁剪,不拉伸。

3、总结
- 进行裁剪的Type:center(在展示不下时会进行裁剪)和centerCrop
- centerInside、fitStart、fitEnd、fitCenter是类似的,在缩放后(centerInside在图片小于ImageView时不进行缩放)总有一边是紧贴着ImageView的,并且图片宽高都不大于ImageView的宽高,最后肯定都是在ImageView内部的。
- centerCrop,在缩放后,总有一边紧贴着ImageView,并且图片的宽高都不小于ImageView的宽高,超出的部分被裁剪掉。
网友评论