在使用ImageView时,常常会用到:
ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType.fitCenter)
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="fitCenter"
android:src="@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控件的,可以来参考一下
原文地址:http://blog.csdn.net/ycwol/article/details/39271183