一,简介;
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原图:
small原图:
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>
展示图:
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>
展示图:
2.3、android:scaleType="centerInside"
a、当图片大于ImageView的宽高:以图片的中心和ImageView的中心点为基准,按比例缩小图片,使图片宽高等于或者小于ImagevView的宽高,直到将图片的内容完整居中显示。
b、当图片小于ImageView的宽高:直接居中显示该图片。
展示图:
2.4、android:scaleType="fitCenter"
表示把图片按比例扩大(缩小)到ImageView的宽或高,居中显示。
展示图:
2.5、android:scaleType="fitStart"
表示把图片按比例扩大(缩小)到ImageView的宽或高,在ImageView的上方显示。
效果图:
2.6、android:scaleType="fitEnd"
表示把图片按比例扩大(缩小)到ImageView的宽或高,在ImageView的下方显示。
效果图:
2.7、android:scaleType="fitXY"
表示把图片按指定的大小在ImageView中显示,拉伸或收缩图片,不保持原比例,填满ImageView。
效果图:
2.8、android:scaleType="matrix"
表示运用图片进行绘制时的矩阵进行缩放,该矩阵可以通过imageView.setImageMatrix(matrix)进行设置。默认情况下展现形式为:不进行任何缩放,从ImageView的左上角开始摆放,原图超过ImageView的部分作裁剪处理。
效果图: