ScaleType的使用方法

iteye_21202發表於2013-05-03

引用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大小的影象,不同的是是否保持原圖大小和繪圖的目標不同、採取的手段不同
	謝謝兩位博主的資源,供學習使用!

相關文章