我们在用ImageView显示图片时,很多情况下图片的大小与ImageView的尺寸不是完全一样的。这时就涉及到该如何设置显示图片了。

ImageView有个重要的属性是ScaleType,该属性用以表示显示图片的方式,共有很多种取值。另外也可以在xml文件中设置ImageView的android:scaleType属性达到调整效果。

这里我们介绍各种设置的含义:

1、ScaleType.CENTER(对应xml文件中为android:scaleType="center")

图片将位于View的中间显示,但不进行缩放,如果图片大小大于ImageView控件,则截取图片中间部分;若小于,则直接将图片居中显示。

2、ScaleType.FIT_CENTER(对应xml文件中为android:scaleType="fitCenter")
ImageView的默认状态,大图等比例缩小,使整幅图能够居中显示在ImageView中;小图等比例放大,同样要整体居中显示在ImageView中。

3、ScaleType.CENTER_CROP(对应xml文件中为android:scaleType="centerCrop")
让图像的短边与ImageView对应的边长度保持一致(可能是放大或缩小),然后按照短边放大或缩小的比例对图像的另外一边进行同比例放大或缩小。
注意:这不像FIT_CENTER会等比缩放。会导致图片缩放后长、宽比例与原来的不一致。
最后截取缩放后图片的中间部分显示。
这在有些场景下还是有用的,比如需要图片充满整个ImageView,但对缩放后失真或截取部分图片可以忍受。

4、ScaleType.FIT_XY(对应xml文件中为android:scaleType="fitXY")

将图片非等比例缩放到大小与ImageView相同。相比CENTER_CROP,这样既能保证图片充满整个ImageView. 又能保证长和宽的缩放相互不影响。

虽然也可能会导致比例缩放不一致,但最后不会导致图像被裁减。

5、ScaleType.CENTER_INSIDE(对应xml文件中为android:scaleType="centerInside")
将图片大小大于ImageView的图片进行等比例缩小,直到整幅图能够居中显示在ImageView中;小于ImageView的图片不变,直接居中显示,不放大。
对于尺寸大于ImageView的图片,效果等同FIT_CENTER,都是等比缩小。

6、还有其它几种情况,不太常用,这里简单说下

ScaleType.FIT_END:缩放方式同FIT_CENTER,只是将图片显示在右方或下方,而不是居中。

  ScaleType.FIT_START:缩放方式同FIT_CENTER,只是将图片显示在左方或上方,而不是居中。

  ScaleType.MATRIX:是根据一个3x3的矩阵对其中图片进行缩放

Android学习笔记:如何设置ImageView中图片的显示方式的更多相关文章

  1. Android学习笔记:如何高效显示图片,避免内存溢出 和 ImageView无法显示大尺寸的图片

    因为手机的内存资源是有限的,每个app可使用的内存是受限的.而现在采用高分辨率拍的照片往往很大.如果加载时不注意方法,很有可能会引起java.lang.OutofMemoryError: bitmap ...

  2. Android学习笔记(第二篇)View中的五大布局

    PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念   view是什么呢?我们已经知道一个Act ...

  3. Android学习笔记进阶20 之得到图片的缩略图

    <1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...

  4. Android学习笔记进阶20之得到图片的缩略图

    <1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...

  5. Android学习笔记进阶19 之给图片加边框

    //设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width ...

  6. Android学习笔记进阶19之给图片加边框

    //设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width ...

  7. Android学习笔记之mainfest文件中android属性

    android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. -------------------------------- ...

  8. Android学习笔记-绘制圆形ImageView实例

    现在很多的APP都很喜欢圆形的头像,这里就简单的写个圆形的ImageView~ 第三方圆形ImageView控件: RoundedImageView CircleImageView 实现代码: 自定义 ...

  9. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

随机推荐

  1. iOS开发之WKWebView简单使用

    iOS开发之WKWebView简单使用   iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版. ...

  2. 之前C#代码的重新设计

    /* 我用python重构了一把这个代码 大家的反应似乎是过度设计了 好吧,我决定不那么激进,采用更中庸一些的重构 我也有些疑惑: 是否如果重构后的代码比重构前要多,就算过度了呢? */ void m ...

  3. Node.js 入门(2)

    1.http 请求 //调用Node.js自带的http模块 var http = require("http"); //调用http模块提供的函数createServer htt ...

  4. centos7 install jdk

    setp1: remove default java [lhs@localhost soft]$ rpm -qa | grep javajava-1.7.0-openjdk-1.7.0.75-2.5. ...

  5. C++类型转换总结

    C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a.C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cast, ...

  6. oracle_执行计划_谓词信息和数据获取(access and filter区别) (转)

    These two terms in the Predicate Information section indicate when the data source is reduced. Simpl ...

  7. POJ2503 Babelfish

    题目链接. 分析: 应当用字典树,但stl的map做很简单. #include <iostream> #include <cstdio> #include <cstdli ...

  8. -_-#Error

    Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters Mongo ...

  9. Visual Studio创建跨平台移动应用_03.AppBuilder Extension

    1 背景 本章节是关于Telerik AppBuilder for Visual Studio的. 目前(2014.12)为Telerik公司Telerik Platform的一部分,Telerik ...

  10. SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块

    原文地址:http://www.awflasher.com/flash/articles/swfobj.htm SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块原文:S ...