ScaleType的使用方法

来源:互联网 发布:人工智能方面的书籍 编辑:程序博客网 时间:2024/05/16 15:21

引用http://www.l99.com/EditText_view.action?textId=545898

图片引用来自于http://blog.csdn.net/larryl2003/article/details/6919513

ImageView的scaleType的属性主要是来设置ImageView控件的前景图片,比如设置PNG的透明色的前景,则ImageView控件的背景色则可以显示出来。背景图片或是颜色一般都是会充满整个控件的大小,但是前景色相当于是控件上层蒙的一层布,而显示的区域仍然是控件的大小,这个肯定是不会变化。

下面补充scaleType下面几种属性对于图片放置位置和缩放比例以至于是否对图片进行拉伸进行说明。

1:ImageView.ScaleType.CENTER|android:scaleType="center" 

以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽,则截取图片的居中部分显示ImageView的size.当图片小于View 的长宽时,只显示图片的size,不剪裁。

例图:

2:ImageView.ScaleType.CENTER_CROP|android:scaleType="centerCrop"

 以原图的几何中心点和ImagView的几何中心点为基准,按比例扩大(图片小于View的宽时)图片的size居中显示,使得图片长 (宽)等于或大于 View的长(宽),并按View的大小截取图片。当原图的size大于ImageView时,按比例缩小图片,使得长宽中有一向等于ImageView,另一向大于ImageView实际上,使得原图的size大于等于ImageView

例图:

3:ImageView.ScaleType.CENTER_INSIDE|android:scaleType="centerInside

以原图的几何中心点和ImagView的几何中心点为基准,将图片的内容完整居中显示,通过按比例缩小原来的size使得图片长(宽)等于或小ImageView的长(宽)

例图:

4:ImageView.ScaleType.FIT_CENTER|android:scaleType="fitCenter

把图片按比例扩大(缩小)到View的宽度,居中显示

例图:

5:ImageView.ScaleType.FIT_END|android:scaleType="fitEnd

把图片按比例扩大(缩小)到View的宽度,显示在View的下部分位置(和4“fitCenter”的缩放方式相同,只是放置的位置显示在View的下方)

6:ImageView.ScaleType.FIT_START|android:scaleType="fitStart"

 把图片按比例扩大(缩小)到View的宽度,显示在View的上部分位置(和4“fitCenter”的缩放方式相同,只是放置的位置显示在View的上面)

7:ImageView.ScaleType.FIT_XY|android:scaleType="fitXY

把图片按照指定的大小在View中显示,拉伸显示图片,会使图片长宽比例拉伸,图片的变形,一般不建议使用此属性,不保持原比例,填满View.

例图:

8:ImageView.ScaleType.MATRIX|android:scaleType="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);
scaletype的种类分为三类matrix(默认)、fit-X类、和center类。
(1)matrix就不多说。
(2)fit-X类中,fitStart、fitCenter和fitEnd之间的都是根据需要使原图改变对ImgView进行适应,不剪裁,按matrix进行绘制,但它们
的区别在于基准不同。fitStart的基准为最上角的点(即matrix方式开始的点)fitCenter的基准点为中间的点
(matrix方式中可以使图片居中的点),而fitEnd的基准点为右下角的点(即matrix方式最后绘制点)。
(3)center类中,center、centerCrop、centerInside都是以原图的几何中心点和ImagView的几何中心点为基准,且只绘制
ImagView大小的图像,不同的是是否保持原图大小和绘图的目标不同、采取的手段不同
谢谢两位博主的资源,供学习使用!

原创粉丝点击