一,简介;

Android 的ImageView控件有一个ScaleType的属性,该属性决定了图片在ImageView上的展现形式,包括:是否进行缩放、如何进行缩放、缩放之后图片的摆放位置等等。

1.1,ScaleType的设置方式包括
a, 在layout的xml中定义android:scaleType="xxx";
b, 在java代码中调用imageView.setScaleType(ImageView.ScaleType.XXX)。

1.2,ScaleType的取值包括

a,layout的xml中: matrix、fitXY、fitStart、fitCenter、fitEnd、center、centerCrop、centerInside
b,java代码中: ImageView.ScaleType.MATRIX、ImageView.ScaleType.FIT_XY、ImageView.ScaleType.FIT_START、ImageView.ScaleType.FIT_CENTER、ImageView.ScaleType.FIT_END、ImageView.ScaleType.CENTER、ImageView.ScaleType.CENTER_CROP、ImageView.ScaleType.CENTER_INSIDE

1.3,ScaleType默认取值

fit_center

二,属性的图文展示

big原图:

Android constraintSet 属性 android scaletype_android

small原图:

Android constraintSet 属性 android scaletype_android_02

2.1、android:scaleType="center"

a,当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按照图片的原大小居中显示,不缩放,用ImageView的大小截取图片的居中部分。

b,当图片小于ImageView的宽高:直接居中显示该图片。

layout布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerHorizontal="true"
        android:background="@android:color/holo_green_light"
        android:scaleType="center"
        android:src="@drawable/big" />

    <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:background="@android:color/holo_green_light"
        android:scaleType="center"
        android:src="@drawable/small" />
</RelativeLayout>

展示图:

Android constraintSet 属性 android scaletype_宽高_03

 

2.2、android:scaleType="centerCrop"

a、当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按比例缩小图片,直到图片的宽高有一边等于ImageView的宽高,则对于另一边,图片的长度大于或等于ImageView的长度,最后用ImageView的大小居中截取该图片。

b、当图片小于ImageView的宽高:以图片的中心店和ImageView的中心点为基准,按比例扩大图片,直到图片的宽高大于或等于ImageView的宽高,并按ImageView的大小居中截取该图片。

layout布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerHorizontal="true"
        android:background="@android:color/holo_green_light"
        android:scaleType="centerCrop"
        android:src="@drawable/big" />

    <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:background="@android:color/holo_green_light"
        android:scaleType="centerCrop"
        android:src="@drawable/small" />
</RelativeLayout>

 展示图:

Android constraintSet 属性 android scaletype_宽高_04

 

2.3、android:scaleType="centerInside"

a、当图片大于ImageView的宽高:以图片的中心和ImageView的中心点为基准,按比例缩小图片,使图片宽高等于或者小于ImagevView的宽高,直到将图片的内容完整居中显示。

b、当图片小于ImageView的宽高:直接居中显示该图片。

展示图:

Android constraintSet 属性 android scaletype_android_05

 

2.4、android:scaleType="fitCenter"

表示把图片按比例扩大(缩小)到ImageView的宽或高,居中显示。

 展示图:

Android constraintSet 属性 android scaletype_xml_06

2.5、android:scaleType="fitStart"

表示把图片按比例扩大(缩小)到ImageView的宽或高,在ImageView的上方显示。

 效果图:

Android constraintSet 属性 android scaletype_宽高_07

2.6、android:scaleType="fitEnd"

表示把图片按比例扩大(缩小)到ImageView的宽或高,在ImageView的下方显示。

 效果图:

 

Android constraintSet 属性 android scaletype_xml_08

2.7、android:scaleType="fitXY"

表示把图片按指定的大小在ImageView中显示,拉伸或收缩图片,不保持原比例,填满ImageView。

 效果图:

Android constraintSet 属性 android scaletype_xml_09

2.8、android:scaleType="matrix"

表示运用图片进行绘制时的矩阵进行缩放,该矩阵可以通过imageView.setImageMatrix(matrix)进行设置。默认情况下展现形式为:不进行任何缩放,从ImageView的左上角开始摆放,原图超过ImageView的部分作裁剪处理。

效果图:

Android constraintSet 属性 android scaletype_xml_10