我们知道,ImageView有一个属性叫做scaleType,它的取值一共有八种,分别是:matrix,fitXY,fitStart,fitCenter,fitEnd,center,centerCrop,centerInside。那我们下面一起来看看这八种取值分别代表什么意思。

我用两张图片来做demo,这两张图片的分辨率一大一小,图片分别叫做big和small。原图如下:

big:

small:

OK,准备工作已经完成。

matrix

matrix表示原图从ImageView的左上角开始绘制,如果原图大于ImageView,那么多余的部分则剪裁掉,如果原图小于ImageView,那么对原图不做任何处理。比如我的两张大小不同的图片,分别显示在96dp×96dp的ImageView上,会有不同的效果,代码如下:

    <ImageView
android:layout_width="96dp"
android:layout_height="96dp"
android:adjustViewBounds="false"
android:background="#ffaa77"
android:scaleType="matrix"
android:src="@drawable/big" /> <ImageView
android:layout_width="96dp"
android:layout_height="96dp"
android:adjustViewBounds="false"
android:background="#aa99cc"
android:scaleType="matrix"
android:src="@drawable/small" />

显示效果如下:

我们看到,big图片由于比较大,因此只有左上角显示出来了,其他部分则被剪裁掉了,而small图片由于分辨率比较小,因此完整的显示在ImageView的左上角。

fitXY

fitXY的目标是填充整个ImageView,为了完成这个目标,它需要对图片进行一些缩放操作,在缩放的过程中,它不会按照原图的比例来缩放。比如下面一个栗子:

    <ImageView
android:layout_width="96dp"
android:layout_height="96dp"
android:background="#ffaa77"
android:scaleType="fitXY"
android:src="@drawable/big" /> <ImageView
android:layout_width="96dp"
android:layout_height="128dp"
android:background="#aa99cc"
android:scaleType="fitXY"
android:src="@drawable/small" />

显示效果如下:

两张图片都被显示出来了,但是都有一定程度的变形,因为在这里系统只考虑将ImageView填充满,而不会按照原图比例去缩放。

fitStart

将图片按比例缩放至View的宽度或者高度(取宽和高的最小值),然后居上或者居左显示(与前面缩放至宽还是高有关),我们来看下面一个例子:

    <ImageView
android:layout_width="48dp"
android:layout_height="256dp"
android:background="#ffaa77"
android:scaleType="fitStart"
android:src="@drawable/big" /> <ImageView
android:layout_width="256dp"
android:layout_height="36dp"
android:background="#aa99cc"
android:scaleType="fitStart"
android:src="@drawable/small" />

显示效果:

big图片是缩放至ImageView的宽度,然后居上显示,small图片是缩放至ImageView的高度,然后居左显示。

fitCenter

fitCenter和fitStart基本一样,唯一不同的是fitCenter将图片按比例缩放之后是居中显示,看下面一个例子:

    <ImageView
android:layout_width="48dp"
android:layout_height="256dp"
android:background="#ffaa77"
android:scaleType="fitCenter"
android:src="@drawable/big" /> <ImageView
android:layout_width="256dp"
android:layout_height="48dp"
android:background="#aa99cc"
android:scaleType="fitCenter"
android:src="@drawable/small" />

显示效果如下:

fitEnd

fitEnd和fitStart也基本一样,唯一不同的是fitEnd将图片按比例缩放之后是居右或者居下显示,比如下面一个Demo:

    <ImageView
android:layout_width="48dp"
android:layout_height="256dp"
android:background="#ffaa77"
android:scaleType="fitEnd"
android:src="@drawable/big" /> <ImageView
android:layout_width="256dp"
android:layout_height="48dp"
android:background="#aa99cc"
android:scaleType="fitEnd"
android:src="@drawable/small" />

center

center表示将原图按照原来的大小居中显示,如果原图的大小超过了ImageView的大小,那么剪裁掉多余部分,只显示中间一部分图像,比如下面一个Demo:

    <ImageView
android:layout_width="48dp"
android:layout_height="256dp"
android:background="#ffaa77"
android:scaleType="center"
android:src="@drawable/big" /> <ImageView
android:layout_width="256dp"
android:layout_height="24dp"
android:background="#aa99cc"
android:scaleType="center"
android:src="@drawable/small" />

显示效果如下:

centerCrop

centerCrop的目标是将ImageView填充满,故按比例缩放原图,使得可以将ImageView填充满,同时将多余的宽或者高剪裁掉,比如下面一个Demo :

    <ImageView
android:layout_width="48dp"
android:layout_height="256dp"
android:background="#ffaa77"
android:scaleType="centerCrop"
android:src="@drawable/big" /> <ImageView
android:layout_width="256dp"
android:layout_height="48dp"
android:background="#aa99cc"
android:scaleType="centerCrop"
android:src="@drawable/small" />

显示效果如下:

centerInsid

centerInside的目标是将原图完整的显示出来,故按比例缩放原图,使得ImageView可以将原图完整显示,比如下面一个Demo:

    <ImageView
android:layout_width="48dp"
android:layout_height="256dp"
android:background="#ffaa77"
android:scaleType="centerInside"
android:src="@drawable/big" /> <ImageView
android:layout_width="256dp"
android:layout_height="48dp"
android:background="#aa99cc"
android:scaleType="centerInside"
android:src="@drawable/small" />

显示效果如下:

OK,关于scaleType属性我们就说这么多,一般情况下,当我们给ImageView的宽高都为固定值的时候我们才有可能用到这些属性。

Demo下载

android学习笔记之ImageView的scaleType属性的更多相关文章

  1. Android学习笔记之Menu的ShowAsAction属性的设置

    (1)在res--menu目录下的main.xml文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  2. android中ImageView的ScaleType属性

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

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

    Android ImageView的scaleType属性与adjustViewBounds属性   ImageView的scaleType的属性有好几种,分别是matrix(默认).center.c ...

  4. Android学习笔记之滑动翻页(屏幕切换)

    如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧. 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是 ...

  5. 转--Android学习笔记-实用代码合集

    http://blog.csdn.net/yf210yf/article/details/7295577 转载请注明原文出处:奔跑的蜗牛(袁方的技术博客)点击打开链接 一.当利用textview显示内 ...

  6. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

  7. android学习笔记36——使用原始XML文件

    XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...

  8. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  9. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

随机推荐

  1. hadoop2.2原理:采样器

    多输入路径-只采一个文件-(MultipleInputs+getsample(conf.getInputFormat) 之前弄采样器,以为已经结束了工作,结果现在又遇到了问题,因为我的输入有两个文件, ...

  2. Codeigniter夸应用调用model

    Thinkphp里面的model都是可以跨应用调用,ci本身没有实现这个方法.可是稍微修改下,比Thinkphp用起来更容易调用.找到Loader.php文件的地址/system/core/Loade ...

  3. Google Chrome中的高性能网络(二)

    Chrome Predictor的预测功能优化 Chrome会随着使用变得更快. 它这个特性是通过一个单例对象Predictor来实现的.这个对象在浏览器内核进程(Browser Kernel Pro ...

  4. JavaScript里的类和继承

    JavaScript与大部分客户端语言有几点明显的不同: JS是 动态解释性语言,没有编译过程,它在程序运行过程中被逐行解释执行JS是 弱类型语言,它的变量没有严格类型限制JS是面向对象语言,但 没有 ...

  5. 两种应该掌握的排序方法--------2.quick Sort

    介绍 http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F 用些里面的c++ 实现,感觉这个空间复杂度比较小.还挺好 in ...

  6. STL find() ,还是挺重要的

    template<class InputIterator, class T> InputIterator find (InputIterator first, InputIterator ...

  7. SQL SERVER 2008查询其他数据库

    1.访问本地的其他数据库 --启用Ad Hoc Distributed Queries-- reconfigure reconfigure -- 使用完成后,关闭Ad Hoc Distributed ...

  8. [Rosa]Android ListView 适配器原理及优化(转)

    ListView的Adapter的作用如下图所示:   Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个V ...

  9. We're Hiring A Software Tester

    测试人员的基本修养: 代码编写,不可或缺 乔布斯说:Design is not just what it looks like and feel like,design is how it works ...

  10. Entity Framework 杂碎

    其实看图很简单,database first和model first都是通过 data model创建的edmx文件,只不过model first模块可以自己根据需要创建和修改实体,显得更加灵活. c ...