首页 > 代码库 > ImageView 的 scaleType 属性

ImageView 的 scaleType 属性

在使用ImageView时,常常会用到:

ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType.fitCenter) 

<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:scaleType="fitCenter"
    android:src=http://www.mamicode.com/"@drawable/a1" />

scaleType有8个属性,分别是:fitCenter、fitStart、fitEnd、fitXY、center、centerCrop、centerInside、matrix

它们的区别在于:

fitCenter:ImageView的默认状态,把图片按比例扩大/缩小居中完整显示在ImageView中。
fitStart:把图片按比例扩大/缩小到View的宽度,完整显示在View的上部分位置
fitEnd: 把图片按比例扩大/缩小到View的宽度,完整显示在View的下部分位置
fitXY: 把图片不按比例扩大/缩小到View的大小,完整显示,并填满View
center:按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
centerCrop:按比例扩大/缩小图片的size居中显示,使得图片的高等于View的高,使得图片宽等于或大于View的宽
centerInside:将图片的内容完整居中显示,将size大于ImageView的图片进行等比例缩小,小于ImageView的图片不变,直接居中显示。
matrix:根据一个3x3的矩阵对其中图片进行缩放(从左上角起始的矩阵区域)

有图有真相:


                    图1: 原图比ImageView大                                                              图二:原图比ImageView小

=====================================================================================================

ps:一开始我不明白MATRIX矩阵,网上搜索后发现原来MATRIX矩阵可以动态缩小放大图片来显示,这里不展开深入的了解,只是贴出相关语句,缩小图片:

//获得Bitmap的高和宽 
int bmpWidth=bmp.getWidth(); 
int bmpHeight=bmp.getHeight(); 
 
//设置缩小比例 
double scale=0.8; 
//计算出这次要缩小的比例 
scaleWidth=(float)(scaleWidth*scale); 
scaleHeight=(float)(scaleHeight*scale); 
 
//产生resize后的Bitmap对象 
Matrix matrix=new Matrix(); 
matrix.postScale(scaleWidth, scaleHeight); 
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
用到ImageView控件的,可以来参考一下

ImageView 的 scaleType 属性