Android ImageView.ScaleType有图有真相

本来没打算写这篇关于ScaleType的文章的,毕竟网上一大把,但是考虑到接下来的PhotoView源码的解析会用到这方面的知识,又不想让读者们再去费力去找别的相关文章,而且有的文章的讲解都是错的,所以就在这里讲解一下ImageView.ScaleType的几种不同类型究竟有什么区别,我们在实际使用的时候究竟应该采用哪一种


  • 使用方法

    • xml中:android:scaleType=”类型”
    • java代码中:imageview.setScaleType(类型)

      注意这个属性只有和ImageView搭配才有作用

  • 类型作用
    • matrix:用矩阵绘图,从原图像的原点开始,尽量去充满ImageView控件的大小,实在充满不了又没有对matrix设置scale就会在ImageView上显示一段没有图像的区域
    • fitXY:暴力拉伸或缩放,即不考虑图片的比例失调,每个方向独立地拉伸或者缩放到ImageView的大小,这种情况下图片很有可能会比例失调,ImageView全部被图像充满,这也是这几种类型中唯一会不按比例调整图片大小的类型,所以一般不用
    • fitStart:按比例拉伸或缩放,可以考虑变换的渐进过程,即按比例放大或缩小图像,直至整个图像都在ImageView的显示区域内,然后把调整后的图像从ImageView的左上角开始放,即图像的上边缘和ImageView的上边缘对齐(除去padding)
    • fitCenter:同fitStart,只不过把调整后的图像放在ImageView的中间
    • fitEnd:同fitStart,把调整后的图像放在ImageView靠下的地方,使得图像的下边缘和ImageView的下边缘对齐(当然也要除去padding)
    • center:保持原图像大小,不对图像拉伸和缩放,直接把图像放在ImageView的中间,图像大的话就截取图像中间的部分
    • centerCrop:按比例拉伸和缩放,保证图像的宽和高分别都<=ImageView的宽和高,然后把调整后的图像放在ImageView中间,这种情况下ImageView可能会有没被图像覆盖的部分
    • centerInside:按比例拉伸和缩放,保证图像的宽和高分别都>=ImageView的宽和高,然后把调整后的图像放在ImageView中间,此时整个ImageView都是覆盖着图像的
  • 类型总结

    ScaleType一共有8种类型,怎么才能记住这几种类型的特征呢,这里我们应用分类的思想,从这几种方式中选取有共同之处的放在一类中,所以我把他们分成三类:

    • fit合身类:fit*这种都属于这一类,这一类的特点是会保证在ImageView的显示范围之外不会有图像绘制,即图像全部在ImageView内显示,不论他是否比例变化,放在ImageView的什么位置
    • center居中类:center*这种的类型,这一类的特点是会保证图像都在ImageView的中间,当然也可以是整个ImageView
    • matrix:这个比较特殊,也最常用,所以下一篇博客就专门讲解一下matrix
  • 上图了

    原图片比ImageView的尺寸大的截图

    原图片比ImageView的尺寸小的截图



原谅我太懒~~~,截图来自于http://blog.csdn.net/xilibi2003/article/details/6628668



看完了这些是不是对ScaleType有了清晰的认识了呢,希望大家能在以后的项目中正确选择自己需要的类型,当然很多情况下直接用.9.png更方便一些

时间: 2024-10-16 13:15:02

Android ImageView.ScaleType有图有真相的相关文章

[Android] ImageView.ScaleType设置图解

ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:scaleType="CENTER" 2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER); 接下来,将对ScaleType的值和对应的显示效果用最直观的方式——真图演示的方法,来进行说明. 首先,是测试使用的原始图片: (

Android ImageView(scaleType属性)图片按比例缩放

<ImageView android:id="@+id/img" android:src="@drawable/logo" android:scaleType="centerInside" android:layout_width="60dip" android:layout_height="60dip" android:layout_centerVertical="true"/&

Android ImageView(scaleType属性)(转)

(转自:http://www.open-open.com/lib/view/open1378257991687.html) 1 2 3 4 5 6 <ImageView android:id="@+id/img"     android:src="@drawable/logo"     android:<span style="color:#ff0000;">scaleType</span>="center

Android ImageView scaleType属性

scaleType属性 文章来源:http://blog.csdn.net/xilibi2003/article/details/6628668 使用ImageView时经常会用到scaleType属性,如: 1 <ImageView android:layout_width="50dp" 2 android:layout_height="50dp" 3 android:scaleType="matrix" 4 android:src=&q

android ImageView scaleType属性(转)

使用ImageView时经常会用到scaleType属性,如: 1 2 3 4 5 6 7 8 9 <ImageView android:layout_width="50dp" android:layout_height="50dp"   android:scaleType="matrix"   android:src="@drawable/sample_small" /> scaleType属性的各个值总是记不住

[转]Android ImageView的scaleType属性与adjustViewBounds属性

Android ImageView的scaleType属性与adjustViewBounds属性 ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fitXY android:scaleType="center" 保持原图的大小,显示在ImageView的中心.当原图的size大于ImageView的size,超过部分裁剪处理. androi

Android API之ImageView.ScaleType代码演示

摘抄自http://blog.sina.com.cn/s/blog_407abb0d0100mao1.html 为了全面演示ImageView.ScaleType的八种类型即CENTER,CENTER_CROP,CENTER_INSIDE,FIT_CENTER,FIT_START,FIT_END,FIT_XY,MATRIX,我在这里通过一个GridView进行显示,可通过点击每一种类型的ImageButton进行详细查看.比较. 背景图片为一个像素宽度(443px)×高度(500px),大于默认

【转】 ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)

1 这里我们重点理解ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType).android:scaleType是控制图片如何resized/moved来匹对ImageView的size.ImageView.ScaleType / android:scaleType值的意义区别: 2 3 CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

【Android】 ImageView.ScaleType设置图解

ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:scaleType="CENTER" 2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER); 接下来,将对ScaleType的值和对应的显示效果用最直观的方式--真图演示的方法,来进行说明. 首先,是测试使用的原始图片: (