ImageView 的ScareType记录
在Android的项目开发,图片是我们项目中占有举足轻重的地位。但是由于Android不同手机的适配,不可能UI设计人员所给的切图在每个手机上都恰到好处的大小。所以此时我们应该善于应用Android系统为ImageView为我们提供的Scaretype属性。
科比镇楼,这张图片的原始尺寸2000*1333,相信这个尺寸的图片在任何手机上显示不下。直接来重点。
在XML中ImageView 是这么设置的timg就是上楼的科比。
<ImageView
android:layout_marginTop="50dp"
android:id="@+id/image_view"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_centerHorizontal="true"
android:src="@mipmap/timg"
android:background="#ff0000"/>
ImageView 没有设置任何的ScareType的时候,默认的ScareType位FIT_CENTER。
FIT_CENTER。FIT就是适应。FIT_CENTER 就是图片在ImageView的中心显示,然后对图片进行缩放,等比率的缩放直到图片的宽或者高等于ImageView设置的宽和高。这里图片的宽为2000,高位1333,等比率的缩放的话,宽肯定先充满ImageView的宽,所以呈现上图的图片样子
FIT_END。FIT_END和FIT_CENTER的缩放原理差不多唯一就是展现效果不同。缩放后的图片会放在控件的“底部”,当然这个底部是相对的。上图中图片位2000*1333所以缩放之后肯定是宽度先充满,所以当宽度先被充满的时候,这个底部就是真正的底部(Bottom)这个END就是bottom。假设图片位1333*2000缩放之后高度肯定先被充满,所以这个底部就是Right也就是图片靠右。
FIT_START。这里的start最终的结果是相对于上面的End而言,如果说上面的Fit_END。最后的图片是靠底边或者右边的话。那么FIT_START就是靠左或者靠上(不上图了)
FIT_XY。顾名思义,就是让图片的大小适用我们谁知的ImageView的大小了,这里就不管是否等比率缩放了。这里图片很有可能变形的。将图片的宽度缩放到ImageView的宽度。图片的高度缩放到ImageView的高度。(如上图)
CENTER。center属性值和上面的fit_center只是少了一个fit。center的意思就是说。将图片的中心和ImageView的中心对齐。再就是发挥图片自己的聪明才智了,如果图片的宽高比ImageView的宽高大,就相当于以ImageView的中心为中心,截取向左向右各width/2宽度的图片宽度(width是ImageView的宽度)。高度同理。(如上图)
CENTER_CROP。这种属性值的效果是。将图片的中心和ImageView的中心对齐。然后将图片进行等比率缩放,直到图片的宽和高都充满ImageView这个时候如果宽或者高的数值比ImageView对应的宽或者高大,就直接截取。如上图(看出和center的区别了么)
CENTER_INSIDE:以原图完全显示为目的,将图片的内容完整居中显示,通过按比例缩小原图的size宽(高)等于或小于ImageView的宽(高)。如果原图的size本身就小于ImageView的size,则原图的size不作任何处理,居中显示在ImageView.它和FIT_CENTER很相似,可以当图片大小大于ImageView的大小的时候,两个是一个效果,但是如果图片大小小于ImageView的大小的时候CENTER_INSIDE就是保持原有图片大小不进行缩放,此时和CENTER的效果差不多。有点CENTER_INSIDE有CENTER和FIT_CENTER的部分效果。