在使用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控件的,可以来参考一下
在线程中如何设置imageview的图片?
可以用setImageBitmap(Bitmap)、setImageDrawable(Drawable)、setImageResource(R.drawable.xxx)、setImageURI(Uri)。
其中第一个和第二个用Bitmap时要小心那个OOM异常。setImageURI(Uri)也是令人头疼,同一个Uri,但图像内容变了,有时居然还是显示前一个的。
用
image.setImageResource(R.drawable.xxx);
或者是
image.setImageDrawable(getResources().getDrawable(R.drawable.xxx);
欢迎交流 http://blog.youkuaiyun.com/ycwol/article/details/39271183