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. .net 开发定时执行的windows服务

    环境:win7+vs2010+Oracle11g+office2010(64位操作系统) 需求:开发定时执行的windows服务从数据库中查询数据下载到指定地址Excel中 一.添加新建项目——win ...

  2. 给一组a标签当前页a标签加class

    <script type="text/javascript"> $(document).ready(function(){ $(".links .topbg_ ...

  3. 7 RandomAccessFile读取文件内容保存--简单例子(需要验证)

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; /** * 读取动态产生的文件内容 */ publ ...

  4. (转) How to install eclipse in ubuntu 12.04

    源地址:http://www.krizna.com/ubuntu/install-eclipse-in-ubuntu-12-04/ Eclipse installation in ubuntu 12. ...

  5. <Win32_5>深入浅出Win32的计时器

    说起时间,对于我们搞IT的人来说,那是要多重要有多重要.我觉得有价值的时间是给有抱负和有才能的人准备的,因为他们会充分利用,不会让时间失望…… 呵呵,有点儿说远了,还是回归主题吧 Win32的计时器其 ...

  6. Ubuntu 14.10安装mentohust

    关于linux下mentohust的安装本来有很多教程了,但从网上找了一些教程没有几个总结的很全面的,大都只言片语,不是太负责.下面详细的列出每一个步骤,希望能帮到有需要的人. 一 安装准备 首先下载 ...

  7. Handlebars expressions

    Basic Usage 1,最简单的handlebars 表达式 <h1>{{title}}</h1> 使用时,会在当前context里找名为title的property,替换 ...

  8. Python 购物车---之商家部分

    知识点:文件写入操作, 函数, 函数递归 #!C:\Program Files\Python35/bin # -*- conding:utf-8 -*- # author: Frank # 定义商品列 ...

  9. 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)——引用

    在Django视图函数中经常出现类似于'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)的错误. ...

  10. ng-repeat-start ng-repeat-end 的使用

    ng-repeat-start与ng-repeat-end时AngularJS(1.2.x)扩展的, 使用这两个指令可以灵活控制遍历形式. 例如: index.html <div class=& ...