本来没打算写这篇关于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的中间,图像大的话就截取图像中间的部分
    • centerInside:按比例拉伸和缩放,保证图像的宽和高分别都<=ImageView的宽和高,然后把调整后的图像放在ImageView中间,这种情况下ImageView可能会有没被图像覆盖的部分
    • centerCrop:按比例拉伸和缩放,保证图像的宽和高分别都>=ImageView的宽和高,然后把调整后的图像放在ImageView中间,此时整个ImageView都是覆盖着图像的
  • 类型总结
    ScaleType一共有8种类型,怎么才能记住这几种类型的特征呢,这里我们应用分类的思想,从这几种方式中选取有共同之处的放在一类中,所以我把他们分成三类:

    • fit合身类:fit*这种都属于这一类,这一类的特点是会保证在ImageView的显示范围之外不会有图像绘制,即图像全部在ImageView内显示,不论他是否比例变化,放在ImageView的什么位置
    • center居中类:center*这种的类型,这一类的特点是会保证图像都在ImageView的中间,当然也可以是整个ImageView
    • matrix:这个比较特殊,也最常用,这篇文章讲的不错,大家可以看看:http://blog.csdn.net/pathuang68/article/details/6991867
  • 上图了

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


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


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


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

Android ImageView.ScaleType有图有真相相关推荐

  1. android imageview 的常用属性,android imageview scaletype属性

    android imageview scaletype属性并不是很常用,以至于到现在我才注意到,但是在某些应用中,这是一个很重要的属性,比如相册应用. ImageView的Scaletype决定了图片 ...

  2. Android ImageView(scaleType属性)(转)

    (转自:http://www.open-open.com/lib/view/open1378257991687.html) 1 2 3 4 5 6 <ImageView android:id=& ...

  3. android matrix 简书,[Android] ImageView ScaleType完全解析

    ImageView有一个ScaleType的属性,该属性决定了图片在ImageView上的展现形式,包括:是否进行缩放.如何进行缩放.缩放之后图片的摆放位置等等.官方介绍如下: Options for ...

  4. Android ImageView ScaleType 图解

    ImageView ScaleType ImageView的Android:scaleType属性,是用来告诉android:src=设置的图片,如何调整去匹配ImgeView.此属性对android ...

  5. android imageview scaletype,ImageView的scaleType知识总结

    来源:若兰明月 ImageView的ScaleType决定了图片在View上的显示的样式,比如如何对图片进行缩放,显示图片整体还是部分,还是根据自己的需求进行相关显示.设置比较简单: xml中如下定义 ...

  6. Android ImageView ScaleType:图解

    ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fi ...

  7. Android ImageView scaleType

    一.类型 ImageView有一个属性叫做scaleType,它的取值一共有八种,分别是:matrix,fitXY,fitStart,fitCenter,fitEnd,center,centerCro ...

  8. android imageview scaletype 按钮状态,Android ImageView 之 ScaleType 详解

    基础储备 在 ImageView 中有一个成员变量mDrawMatrix,这个变量是Matrix(矩阵)类型,我们了解一下这个Matrix类,Matrix 常见的方法有setScale(sx,sy) ...

  9. Android ImageView的ScaleType属性

    android中ImageView的ScaleType属性 ScaleType的值分别代表的意义: ImageView是Android中的基础图片显示控件,该控件有个重要的属性是ScaleType,该 ...

最新文章

  1. hadoop + spark+ hive 集群搭建(apache版本)
  2. 在featureDataset和workspace下創建featureclass
  3. Windows10 家庭版——开启Hyper-V虚拟机
  4. HDOJ1181变形课 深搜回溯
  5. 内存分配——栈、堆、静态区、符号区等等
  6. e服务器系统可以用PE来装吗,U盘安装系统有哪些方式可以启动WinPE
  7. 机器学习之-BoostedTree
  8. 游戏服务器级别分类及对应服务器架构
  9. Windows多用户配置,不同用户不同访问权限
  10. Unity 3D模型展示之自由观察模型
  11. 极限思想在计算机中的应用,数学极限思想的应用论文(共2篇)
  12. [Noi1999]钉子和小球
  13. 特斯拉官网上贷款利息年化费率计算错误
  14. y yun m_yun是y---un 组成 ,还是y----ün组成
  15. 十年海军为什么选择开启代码人生?
  16. 快速启动以管理员身份运行命令行窗口命令
  17. 四门轿跑 标致发布Exalt概念车设计图
  18. OracleOCM认证
  19. 中兴c600olt数据配置_中兴OLT配置
  20. vmos切换安卓版本_【手机虚拟系统】VMOS虚拟大师无广告版v1.1.35

热门文章

  1. Sparse coding(稀疏编码)
  2. Parallels Desktop 网络初始化失败解决方法
  3. Spring Boot 核心编程思想-第二部分-读书笔记
  4. Python 爬虫 基金排行 基金评级 基金经理 等核心基金数据爬虫
  5. sdp3命令 matlab,Yalmip学习笔记
  6. linux不能强制显卡分辨率,Linux系统装显卡驱动及分辨率不正常的解决方法
  7. oracle 11g 硬件需求,ORACLE 11g R2数据库装配硬件环境要求
  8. 数值型数据和标称型数据
  9. linux 随机抽取文件中N行
  10. 最伟大的12位程序猿