標籤:
詳解android:scaleType屬性
轉自:http://blog.csdn.net/encienqi/article/details/7913262 http://juliaailse.iteye.com/blog/1409317
Android:scaleType是控製圖片如何resized/moved來匹對ImageView的size。
ImageView.ScaleType / android:scaleType值的意義區別:
CENTER /center 按圖片的原來size置中顯示,當圖片長/寬超過View的長/寬,則截取圖片的置中部分顯示
CENTER_CROP / centerCrop 按比例擴大圖片的size置中顯示,使得圖片長(寬)等於或大於View的長(寬)
CENTER_INSIDE / centerInside 將圖片的內容完整置中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬
FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,置中顯示
FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置
FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置
FIT_XY / fitXY 把圖片不按比例擴大/縮小到View的大小顯示
MATRIX / matrix 用矩陣來繪製,動態縮小放大圖片來顯示。
** 要注意一點,Drawable檔案夾裡面的圖片命名是不能大寫的
分別將adjustViewBonds設為true和false,與各種scaleType搭配,產生了不同效果。(上面的ImagView的adjstViewBonds值為false;下面的ImagView的adjstViewBonds值為true;兩個ImagView大小相同)如下:
代碼:
<ImageView android:id="@+id/imageView1" android:layout_width="fill_parent" android:layout_height="200dip" android:adjustViewBounds="false" android:scaleType="centerInside"//此處每次更改 android:src="@drawable/ic_3" />//此處兩幅圖間更改,一副圖的大小較小,另一幅的較大。 <ImageView android:id="@+id/imageView2" android:layout_width="fill_parent" android:layout_height="200dip" android:adjustViewBounds="true" android:scaleType="centerInside"//此處每次更改 android:src="@drawable/ic_3" />//此處兩幅圖間更改,一副圖的大小較小,另一幅的較大。
1、scaleType=“matrix”
pic1、pic2.
是保持原圖大小、從左上方的點開始,以矩陣形式繪圖。
pic1
pic2
2、scaleType=“fitXY”
pic3、pic4.
是將原圖進行橫方向(即XY方向)的展開後繪製的。
pic3
pic4
3、scaleType=“fitStart”
pic5、pic6。
是將原圖沿左上方的點(即matrix方式繪圖開始的點),按比例縮放原圖繪製而成的。
pic5
pic6
4、scaleType=“fitCenter”
pic7、pic8。
是將原圖沿上方置中的點(即matrix方式繪圖第一行的置中的點),按比例縮放原圖繪製而成的。
pic7
pic8
5、scaleType=“fitEnd”
pic9、pic10。、
是將原圖沿下方置中的點(即matrix方式繪圖最後一行的置中的點),按比例縮放原圖繪製而成的。
pic9
pic10
6、scaleType=“Center”
pic11、pic12。
是保持原圖大小,以原圖的幾何中心點和ImagView的幾何中心點為基準,只繪製ImagView大小的映像。
pic11
pic12
7、scaleType=“centerCrop”
pic13、pic14。
不保持原圖大小,以原圖的幾何中心點和ImagView的幾何中心點為基準,只繪製ImagView大小的映像(以填滿
ImagView為目標,對原圖進行裁剪)。
pic13
pic14
8、scaleType=“centerInside”
pic15、pic16.
不保持原圖大小,以原圖的幾何中心點和ImagView的幾何中心點為基準,只繪製ImagView大小的映像(以顯示
完整圖片為目標,對原圖進行縮放)。
pic15
pic16
(事實證明,adjustViewBonds單獨設定無影響。)
scaletype的種類分為三類matrix(預設)、fit-X類、和center類。matrix就不多說。fit-X類中,
fitStart、fitCenter和fitEnd之間的都是根據需要使原圖改變對ImgView進行適應,按matrix進行繪製,但它們
的區別在於基準不同。fitStart的基準為最上角的點(即matrix方式開始的點)fitCenter的基準點為中間的點
(matrix方式中可以使圖片置中的點),而fitEnd的基準點為右下角的點(即matrix方式最後繪製點)。center類
中,center、centerCrop、centerInside都是以原圖的幾何中心點和ImagView的幾何中心點為基準,且只繪製
ImagView大小的映像,不同的是是否保持原圖大小和繪圖的目標不同、採取的手段不同。
詳解android:scaleType屬性