android的ImageView之ScaleType效果研究
这是网络上铺天盖地的scaletype详解:
ImageView的ScaleType决定了图片在View上显示时的样子,如何进行比例缩放,以及显示图片的整体还是部分。
如下两种方法:
1. 在layout.xml中定义android:ScaleType=”CENTER”
2. 在代码中调用imageView.setScaleType(imageView.scaleType.CENTER);
下面是针对属性的详解:
1)CENTER
按图片的原来size 居中显示,当图片长宽超过View的上宽时,则截取图片的居中部分显示
2)CENTER_CROP
按比例扩大图片的size 居中显示,使得图片的长宽的等于或大于View的长宽
3)CENTER_INSIDE
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长宽等于或小于view的长宽
4)FIT_CENTER
把图片按比例扩大或缩小到View的宽度,然后居中显示
5)FIT_STAR
把图片按比例扩大或缩小到View的宽度,然后置顶显示
6)FIT_END
把图片按比例扩大或缩小到View的宽度,然后置于底部显示
7)FIT_XY
不按比例缩放图片,目标是把整个图片塞满整个View
短短几句话实在不能很好理解到底有什么不同,于是我专门在项目中找到不同图片实践对比了一下效果,将结果发上来:
1.首先确定几个全局规则及定义几个词汇:
截取–裁剪图片的一部分用以显示
截取情况下,所看到的都不会变形.
fit–在某一方向上进行缩放,直到图片该方向上的两端跟控件一样长为止
缩小时,先fit的定义为短边
放大时,先fit的定义为长边
控件某一方向设置为wrapcontent情况下,该方向上控件大小均等于图片实际大小(会影响到后面的长短边判断)
2.不同情况下的缩放形式
centerCrop:只要有一边小于控件大小,则认为是小图
小图:
短边先放大至fit,然后从中间截取.
大图:
短边先缩小至fit,然后不变形截取
总结:要让图片在不变形的情况下,完全显示到控件所有地方.
centerinside:只要有一边大于控件大小,则认为是大图
小图:
居中显示,不缩放
大图:
长边缩小至fit,居中显示
总结:要让图片在不变形的情况下,显示全部.可以不撑满控件
center:只要有一边大于控件大小,则认为是大图
小图:
居中显示,不缩放
大图:
长边缩小至fit,然后居中
总结:感觉跟centerInside差不多?
fitcenter:只要有一边大于控件大小,则认为是大图
小图:
长边放大至fit,短边居中
大图:
长边缩小至fit,短边居中
总结:充分展示fit的意思.在此前提下缩放长边,让图片全部显示
fitstart/fitend:跟fitcenter类似,只不过变成靠头部或者尾部
这里不说上下是因为根据长边和短边的定义,可能是靠左或者靠右.
fitxy:双向拉伸图片.撑满控件
若某一边设置为wrapcontent,则按图片大小来定义控件实际大小
matrix:使用matrix来缩放图片.
初始值:图片无缩放,从控件的左上角开始摆放
小图:剩余部分无图片填充.
大图:会只显示图片一部分.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!