2016-01-10

刚开始android编程的时候, 关于ImageView.ScaleType网络上好多, 说实话没看懂. 本文就是为了讲清楚这个, 有用的话转走, 请注明原地址和作者.

典型的代码调用如下

    <ImageView
android:layout_width="300dp"
android:layout_height="400dp"
android:scaleType="center"
android:src="@drawable/numbers" >
</ImageView>

为了看起来方便, 下面所有的例子中ImageView(我把它叫做容器)的大小固定在300x400dp, 只调整图片的大小.

图片使用0-8数字格, 添加了10px的蓝色边框. 这样如果图片经过了变形裁剪等, 都很容易看出来.

ScaleType主要有如下几种取值:

1. CENTER 把图片放在容器的中间, 但是不会调节图片尺寸, 原图多大就显示多大.

图片100x100               图片300x300                  图片400x400

2. CENTER_CROP  等比例放大或者缩小图片, 目的是调整后图片的一条边正好等于容器的边, 另一条边要大于等于容器的边. 看起来就是一定要把图片拉伸出去.

不管图片是100x100, 还是900x900, 都是左边的效果, 都会把一条边(这里是水平边)调整成和容器一样大, 垂直边调整成超出容器.

3. CENTER_INSIDE 等比例放大或者缩小图片, 目的是调整后图片的两条边都要小于等于容器的边. 看起来就是一定要把图片压缩进去.

图片小                  图片大

4. FIT_CENTER 等比例放大或者压缩图片, 目的是调整后图片的一条边正好等于容器的边, 另一条边要小于等于容器的边. 而且图片要放在容器中心.

  不管100x100, 还是900x900, 图片都会把严丝合缝的放进去.

5. FIT_END 同FIT_CENTER, 只是图片放在容器的右下方

6. FIT_START 同FIT_CENTER, 只是图片放在容器的左上方

7. FIT_XY 不管大图小图, 简单粗暴的把X和Y拉成和容器一样大小.

总结一下,

1. 最常用的就是FIT_CENTER, FIT_START, FIT_END, 因为1.它保证了图片的长宽比, 显示出来的和原图协调; 2. 它至少使一条边贴近容器, 充分考虑了容器的大小.

2. 其次常用的是FIT_XY, 优点是确保容器被填满, 缺点是图片失真.

3. CENTER_CROP会导致图片被裁剪;CENTER_INSIDE不适用于小图, 会导致图片看起来很小, 容器很大, 不成比例, 完全可以用FIT_CENTER代替.

4. 最不常用的是CENTER, 完全不调整图片尺寸, 对容器大小的限制太死, 在android多分辨率的设备上无法使用.

一篇文章讲清楚android ImageView.ScaleType的更多相关文章

  1. 还分不清 Cookie、Session、Token、JWT?一篇文章讲清楚

    还分不清 Cookie.Session.Token.JWT?一篇文章讲清楚 转载来源 公众号:前端加加 作者:秋天不落叶 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证 ...

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

    (转自:http://www.open-open.com/lib/view/open1378257991687.html) <ImageView android:id="@+id/im ...

  3. [Android] ImageView.ScaleType设置图解 【转载】

    ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:s ...

  4. [Android] ImageView.ScaleType设置图解

      ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android ...

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

    <ImageView android:id="@+id/img" android:src="@drawable/logo" android:scaleTy ...

  6. Android ImageView scaleType属性

    scaleType属性 文章来源:http://blog.csdn.net/xilibi2003/article/details/6628668 使用ImageView时经常会用到scaleType属 ...

  7. android ImageView scaleType属性(转)

    使用ImageView时经常会用到scaleType属性,如: 1 2 3 4 5 6 7 8 9 <ImageView   android:layout_width="50dp&qu ...

  8. 一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推

    迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子. 手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:"加班使我快乐". 面试官: ...

  9. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

随机推荐

  1. Unable to open log device '/dev/log/main': No such file or directory

    在我们使用真机进行Android应用调试时,无法获得调试信息,错误提示如下:Unable to open log device '/dev/log/main': No such file or dir ...

  2. OD调试6—使未注册版软件的功能得以实现

    OD调试6—使未注册版软件的功能得以实现 本节使用的软件下载链接 (想动手试验的朋友可以下载来试试) 继续开始我OD调试教程的学习笔记. 本次试验对真正的程序进行逆向.(之前的都是为破解而专门设计的小 ...

  3. hdu 2438

    Problem Description Mr. West bought a new car! So he is travelling around the city. One day he comes ...

  4. Java 中字符串的子串搜索

    基友前两天参加了阿里的实习生面试,问了个问题,就是关于字符串的子串搜索的问题.想想实现方式无非就是两层循环,但是 java 中是有现成实现的,于是我就去查查源码,看看 java 语言怎么实现这个的,发 ...

  5. Eclipse开发Python项目

    最近倒腾python自带的开发工具idle,用的很不习惯,还是用Eclipse编写python项目方便(自动补齐,智能报错,调试方便),下面就说说怎么用Eclipse编写python代码吧~ 1.安装 ...

  6. kafka文档翻译(一)

    原文来自(http://kafka.apache.org/documentation.html) 本文只做简单的翻译,水平有限,仅供学习交流使用 如有错误,欢迎点评指正 1  准备开始 1.1 介绍 ...

  7. Javascript个人理解

    一. 生成对象的原始模式 假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性. var Cat = { name : '', color : '' } 现 ...

  8. Servlet接收JSP参数乱码问题解决办法

    转自:http://lavasoft.blog.51cto.com/62575/274527/   环境: apache-tomcat-6.0.24.zip jdk1.6.0_16 WindosXP ...

  9. js拖拽进度条

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx. ...

  10. form 练习

    <form>姓:<input type="text" name="firstname" /><br />名:<inpu ...