ImageView的ScaleType详解

原创 2016年08月31日 16:55:49

ScaleType表示ImageView的缩放类型,决定了一张图片在ImageView控件内如何缩放和显示。

ScaleType的官方文档:
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html

ScaleType可以使用java代码或xml属性来设置。


ScaleType是一个枚举类型,定义如下。

public enum ScaleType {
    MATRIX      (0),

    FIT_XY      (1),

    FIT_START   (2),

    FIT_CENTER  (3),

    FIT_END     (4),

    CENTER      (5),

    CENTER_CROP (6),

    CENTER_INSIDE (7);

    ScaleType(int ni) {
        nativeInt = ni;
    }
    final int nativeInt;
}
以centerCrop为例,使用java代码设置,代码为imageView.setScaleType(ImageView.ScaleType.CENTER_CROP)。

在xml布局文件中,可以使用如下属性。
android:scaleType="center"
android:scaleType="centerCrop"
android:scaleType="centerInside"
android:scaleType="fitStart"
android:scaleType="fitCenter"
android:scaleType="fitEnd"
android:scaleType="fitXY"
android:scaleType="matrix"


下面,结合示例详细介绍每一种类型。
首先准备两张示例图片,一张小图和一张大图,分别为adidas1.png(135*135)和adidas2.png(540*540)。
     
然后添加如下xml布局文件。将ImageView的宽高设置为150dp和100dp,以确保小图的尺寸小于ImageView的尺寸,大图的尺寸大于ImageView的尺寸。并将ImageView的背景色设置成灰色(#cccccc),方便查看效果。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="#000000"
              android:gravity="center">
    <ImageView
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:background="#cccccc"
        android:scaleType=""
        android:src="@drawable/adidas"/>
</LinearLayout>

进入ScaleType类型的介绍。

CENTER
Center the image in the view, but perform no scaling. 
把图片放置到ImageView的中心,不执行缩放。如果图片尺寸比ImageView小,会有空白区域;如果图片尺寸比ImageView大,图片的中间区域会被裁剪出来显示到ImageView中。
     

CENTER_CROP
Scale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or larger than the corresponding dimension of the view (minus padding). The image is then centered in the view.
把图片放置到ImageView的中心,执行缩放。将图片的宽度和高度按照相同比例缩放,直到图片的宽度大于或者等于ImageView的宽度,同时图片的高度大于或者等于ImageView的高度。
     

CENTER_INSIDE
Scale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or less than the corresponding dimension of the view (minus padding). 
把图片放置到ImageView的中心。如果图片的尺寸小于ImageView的尺寸,不缩放;否则,将图片的宽度和高度按照相同比例缩放,直到图片的宽度小于ImageView的宽度,同时图片的高度小于ImageView的高度。
     

FIT_CENTER
Scale the image using CENTER. 
把图片放置到ImageView的中心,然后按相同比例放大或缩小,直到图片宽度等于ImageView宽度,或者高度等于ImageView高度。
     

FIT_START
Scale the image using START. 
把图片放置到ImageView的左上角,然后按相同比例放大或缩小,直到图片宽度等于ImageView宽度,或者高度等于ImageView高度。
     

FIT_END
Scale the image using END. 
把图片放置到ImageView的右下角,然后按相同比例放大或缩小,直到图片宽度等于ImageView宽度,或者高度等于ImageView高度。
     

FIT_XY
Scale the image using FILL.
不保持图片的宽高比例,执行放大或缩小,直到图片宽度等于ImageView宽度,同时高度等于ImageView高度。
    

MATRIX
Scale using the image matrix when drawing. The image matrix can be set using setImageMatrix(Matrix).
不缩放图片,用图片的矩阵从左上角开始来绘制。

     


版权声明:本文为博主原创文章,转载请注明出处。

ImageView的属性android:scaleType设置最佳比例图片显示

实现图片轮播,以前的大图片比例会在GuideGallery中自动缩放,后来编辑把图片大小修改了。在大屏不能适应屏幕。试了很多方法终于解决。先说Imageview的属性。可在java代码中实现,也可以在...
  • anlidengshiwei
  • anlidengshiwei
  • 2015年05月15日 13:47
  • 1691

ImageView的源码解读,以及几种ScaleType的分析

分析ImageView的源码,并实例讲解ScaleType的作用以及变换原理
  • yeah0126
  • yeah0126
  • 2016年06月02日 23:03
  • 4629

ImageView的属性android:scaleType设置最佳比例图片显示

实现图片轮播,以前的大图片比例会在GuideGallery中自动缩放,后来编辑把图片大小修改了。在大屏不能适应屏幕。试了很多方法终于解决。先说Imageview的属性。可在java代码中实现,也可以在...
  • jia635
  • jia635
  • 2014年07月23日 10:49
  • 5844

imageview的scaleType详解(附图)

mageView的scaleType的属性有好几种,分别是matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fit...
  • musk6
  • musk6
  • 2017年01月11日 16:22
  • 136

Android ImageView 的 scaleType属性详解(二)

接着上一篇文章说,如果你没有看上一篇的文章的话,先去看看吧,这章没有上一篇汇重要Android ImageView 的 scaleType属性详解(一) 1 就不扯别的了吧,说多了都是泪水啊。 5 s...
  • leilifengxingmw
  • leilifengxingmw
  • 2016年03月03日 16:50
  • 486

Android ImageView scaleType+adjustViewBounds两个属性详解 保证图片不变形

转自:http://www.2cto.com/kf/201411/348601.html 记得当初学习ImageView 的时候,觉得很简单,很基础。 直到两年后我才开始使用adjustViewBo...
  • u012553125
  • u012553125
  • 2016年08月24日 22:49
  • 3552

ImageView.ScaleType 属性详解

看图说话当图片比 ImageView 大时:当图片比 ImageView 小时:android:scaleType=”center” 当图片大于 ImageView 的宽高:以图片的中心点和 Imag...
  • heshiweij
  • heshiweij
  • 2016年02月16日 13:54
  • 417

ImageView的scaletype详解

第一次使用csdn记录 飞机票:http://blog.sina.com.cn/s/blog_618199e60100y537.html 很详细 2、XML属性 属性名...
  • qq_17160633
  • qq_17160633
  • 2015年06月19日 11:56
  • 254

Android中ImageView的scaleType属性详解

一直都对scaleType属性一知半解,今天有空网上找了些资料加上自己的demo演示终于算是了却了一直存在的疑问。ImageView中的scaleType属性用以表示显示图片的方式,下面开始详细的介绍...
  • wangyi891223
  • wangyi891223
  • 2015年04月15日 14:44
  • 148

ImageView中的ScaleType详解

官方介绍下面举个例子对以上几点属性逐条说明准备准备一张400x300的图片,命名为:test_400x300,写一个简单的布局,观察右边preview预览图的变化。 从图中我们可以看到,此控件的...
  • CPPAlien
  • CPPAlien
  • 2015年12月30日 01:38
  • 376
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ImageView的ScaleType详解
举报原因:
原因补充:

(最多只允许输入30个字)