学而实习之 不亦乐乎

Android:ImageView 图片等比例缩放

2022-04-19 22:04:22

一、实现图片等比例缩放

在 Android 系统中,有时候希望让一个 ImageView 里的图片等比例缩放填满控件,实现起来感觉很简单,可是我却走了不少弯路。

其实,在设置完 src 后,设置下面两个属性就可以实现了。

android:adjustViewBounds="true" 
android:scaleType="fitXY"

二、ImageView scaleType属性解析

scaleType="matrix":保持原图大小、从左上角的点开始,以矩阵形式绘图。
scaleType="fitXY":将原图进行横方向(即XY方向)的拉伸后绘制的。
scaleType="fitStart":将原图沿左上角的点(即matrix方式绘图开始的点),按比例缩放原图绘制而成的。
scaleType="fitCenter":将原图沿上方居中的点(即matrix方式绘图第一行的居中的点),按比例缩放原图绘制而成的。
scaleType="fitEnd":将原图沿下方居中的点(即matrix方式绘图最后一行的居中的点),按比例缩放原图绘制而成的。
scaleType="Center":保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像。
scaleType="centerCrop":不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以填满ImagView为目标,对原图进行裁剪)。
scaleType="centerInside":不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以显示完整图片为目标,对原图进行缩放)。

三、ImageView 属性解析

adjustViewBounds:是否保持宽高比。需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。
cropToPadding:是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用。
maxHeight:设置View的最大高度,单独使用无效,需要与setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置:
    1) 设置setAdjustViewBounds为true;
    2) 设置maxWidth、MaxHeight;
    3) 设置设置layout_width和layout_height为wrap_content。
maxWidth:设置View的最大宽度。使用同 maxHeight。
src:设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小)
tint:将图片渲染成指定的颜色。