在使用这个属性的时候,需要明白其中几个属性的区别:
Center
Center_crop
center_inside
fit_center
fit_end
Fit_start
Fit_end
Fit_xy
为了方便理解,这里将 图片的宽高定义为x,控件ImageView的宽高定义为Y。
center属性:
目的:将图片显示在ImagView的中心点,不进行缩放。
1,若x均大于Y,则不完整显示。
2,若x均小于Y,则原图显示。
center_crop属性:
目的:将图放在中心点,再进行等比例缩放,使得图片的x均不小于控件的Y。
1,若x均小于Y,则等比例放大图片,直至铺满控件,这种情况等比例放大,可能会导致 某方向上的图片显示不全。
2,若x1或x2小于Y1或Y2,则放大铺满控件。(x1 x2 指宽或高,其他同理)。
举例:控件为750*750,图片位600*800,这样会将600放大到750,而800也会等比例放大,则垂直方向会显示不全,(800所在的方向),会被裁剪。
3,若x>Y,等比例缩小图片,当x1或x2 等于对应的Y1或Y2时,停止缩放,这种情况则会导致图片显示不完整,有缺失。
特点:图片会铺满imagView,但可能会显示不完全。
Center_inside属性:
目的:将图片放在中心点,再进行等比例缩放。使得图片的 X均不小于控件的Y。
1,若x<y,则将图放在中间,此情况下可能四周会出现背景颜色。
2,若x1或x2 >Y1或Y2,则将图片等比例缩小直到控件 完整显示该图片,此情况下,图片的上下或者左右,可能会出现背景颜色。
3,若x>y,则等比例缩小图片使得图片的x均不大于Y,所以也很容易导致上下或者左右出现背景色。
特点:1,始终会完全显示图片
2,可能导致imageVIew留白,即露出背景颜色。
前两者的 区别: center-crop 要求图片的x均不小于控件的Y。
center_inside 要求图片的x均不大于控件的Y。
fit_center属性:
将图片放在中心点,对图片进行等比例缩放,从而完整的显示图片。。重点完整的显示图片。直到图片的某一个方向的值(X1或x2) 等于控件的某一值(Y1或Y2)
1,当x均(小于)Y,等比例放大图片,这种情况下上下或左右可能出现背景色,与center_inside一致。
2,当图片的X>控件的Y时。则等比例缩小图片,直到x1或X2等于Y1或者Y2任意一值。这种情况下与1 一样,可能出现背景色。(某方向)
3,当图片的某一值 大于控件的某一值时,此时有一个原则:完整的显示图片。所以此时会对图片进行等比例缩放。直到图片的X均不大于控件的Y。
特点: 必须完整显示图片。与center_inside的主要区别就是:当图片的X都小于控件的Y时,center_inside是完整显示就行,放中间,会出现背景色,但不一定会宽高与控件相等。而fit_center的宽高至少有一值与控件的相等。(重点区别)
fit_end 和fit_center属性类似,差别在于fit_end会将缩放后的图片放在控件的右下角。
fit_start (左上角)
Fit_xy 不按照比例缩放图片,从而使图片铺满整个控件,在此情况下虽然可以 完整的显示图片,但是图片会被拉伸 导致失真。
saleType的默认值为 fit_center。
记录一次在调整项目中图片显示不全所遇到的坎。
若有不对的地方,望提出,加以修改,共同进步。