ImageView 布局时,有个 scaleType。
网上关于 scaleType 的解释有很多是不正确的。
虽然本文没图,显得也有点乱,但是讲解是正确的。
属性值解释
matrix:不放大缩小图片,图片左上角对应 ImageView 左上角,超出部分就剪裁。
center:不放大缩小图片,图片中心点对应 ImageView 中心点,超出部分就剪裁。
centerCrop:等比例放大或缩小图片,直到有一边等于 ImageView 相应边,另一边大于或等于相应边。
centerInside:等比例缩小图片,直到有一边等于 ImageView 相应边,另一边小于或等于相应边。
fitXY:不等比例放大或缩小图片,使图片的宽度等于 ImageView 的宽度,使图片的高度等于 ImageView 的高度。非常简单粗暴。
fitStart:等比例放大或缩小图片,直到有一边等于 ImageView 相应边,另一边小于或等于相应边,图片左上角对应 ImageView 左上角。
fitCenter:等比例放大或缩小图片,直到有一边等于 ImageView 相应边,另一边小于或等于相应边,图片中心点对应 ImageView 中心点。与 centerInside 不同的是:centerInside 只会缩小照片,不会放大照片。
fitEnd:等比例放大或缩小图片,直到有一边等于 ImageView 相应边,另一边小于或等于相应边,图片右下角对应 ImageView 右下角。
上述的“相应边”是指宽对宽、高对高,即图片的宽对应 ImageView 的宽,图片的高对应 ImageView 的高。
这么多属性值,怎么记忆呢?
可以看出:
图片一定充满 ImageView 的只有两种属性值:centerCrop、fitXY。centerCrop 可能图片显示不全,fitXY 可能图片会变形。
图片一定完全显示的有四种属性值:centerInside、fitStart、fitCenter、fitEnd。
那么 scaleType 的默认值是?
网上答案也是五花八门,有说 matrix、有说 centerInside、有说 fitCenter。
而我要告诉你,答案是:fitCenter。
如果 ImageView 的尺寸是 wrap_content?是指多少?
指图片的原始尺寸。