在Android开发中,经常会使用到ImageView控件,其中scaleType属性,可以对图片的缩放和位置做出相应的调整,下面对scaleType的九个取值做出详细的解释:
一、matrix
不缩放。图片大于view时将会被裁剪。
图片(不论大小)一律不缩放,并从左上角开始平铺,比view大则裁剪掉。即小图保持原样,而大图将被部分裁剪。
二、fitXY
必要时会不按比例缩放。完整显示图片。
图片(不论大小)一律要保证刚好充满整个View。所以,如果是大图,则缩小;如果是小图,则放大;如果图片的高宽比例与view的高宽比例不同,那么就会不按比例强制缩放。
三、fitStart
必要时会按比例缩放。完整显示图片。
小图按比例放大到view的高度(或者宽度),而大图按比例缩小到view的高度(或者宽度)。缩放的原则是必须保证图片长的一条边把view填满。
图片显示在View的左方(或者上方)。当图片较窄时(即图片的高与宽的比例大于view的高与宽比例),显示在左方;当图片较长时(即图片的高与宽的比例小于view的高与宽比例),显示在上方。
四、fitCenter
原理同fitStart。
唯一不同的是,图片显示在View的正中心。
五、fitEnd
原理同fitStart。
唯一不同的是,图片显示在View的右方(或者下方)。
六、center
不缩放。图片大于view时将会被裁剪。
小图居中显示(横向和纵向都居中),而大图也居中显示,而将四周多余出来的部分裁剪掉。
center与上面讲到的matrix很相似,都是“不缩放”,不同的地方就是图片摆放的位置,matrix是从左上角开始平铺,而center保证图片的中心点居中。
七、centerCrop
必要时会按比例缩放。图片基本上都要裁剪(除非图片的高宽刚好等于view的高宽)。
小图放大,直到短边填满view,而长边居中,并将两头多余的长边裁剪掉;而大图缩小,与小图同理,短边填满view之后,长边的两头裁剪掉。确保了图片无论大小,都能覆盖整个view。
八、centerInside
必要时会按比例缩放。完整显示图片。
小图不放大,居中显示(横向和纵向都居中),与android:scaleType=”center”效果相同;大图缩小到长边与view相同,并居中显示(横向或纵向都居中)。
九、未设置scaleType
在未设置scaleType时,系统默认保证图片完整、居中显示,并等比缩放,其效果跟android:scaleType=”fitCenter”的效果一致。