關於android中ImageView的外觀,即圖片在其內顯示出的樣子,與佈局文件中adjustViewBonds和scaleType
屬性的關係。我進行了一些探索。現跟你們共享,歡迎各位指教。分別將adjustViewBonds設爲true和false,與各類scaleType搭配,產生了不一樣效果。(上面的ImagView的adjstViewBonds值爲false;下面的ImagView的adjstViewBonds值爲true;兩個ImagView大小相同)以下:android
代碼:ide
<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" />//此處兩幅圖間更改,一副圖的大小較小,另外一幅的較大。
原圖:
一、scaleType=「matrix」
如圖pic一、pic2.
是保持原圖大小、從左上角的點開始,以矩陣形式繪圖。佈局
pic1
spa
pic2
二、scaleType=「fitXY」
如圖pic三、pic4.
是將原圖進行橫方向(即XY方向)的拉伸後繪製的。code
pic3
xml
pic4
三、scaleType=「fitStart」
如圖pic五、pic6。
是將原圖沿左上角的點(即matrix方式繪圖開始的點),按比例縮放原圖繪製而成的。圖片
pic5
ip
pic6
四、scaleType=「fitCenter」
如圖pic七、pic8。
是將原圖沿上方居中的點(即matrix方式繪圖第一行的居中的點),按比例縮放原圖繪製而成的。it
pic7
class
pic8
五、scaleType=「fitEnd」
如圖pic九、pic10。、
是將原圖沿下方居中的點(即matrix方式繪圖最後一行的居中的點),按比例縮放原圖繪製而成的。
pic9
pic10
六、scaleType=「Center」
如圖pic十一、pic12。
是保持原圖大小,以原圖的幾何中心點和ImagView的幾何中心點爲基準,只繪製ImagView大小的圖像。
pic11
pic12
七、scaleType=「centerCrop」
如圖pic1三、pic14。
不保持原圖大小,以原圖的幾何中心點和ImagView的幾何中心點爲基準,只繪製ImagView大小的圖像(以填滿
ImagView爲目標,對原圖進行裁剪)。
pic13
pic14
八、scaleType=「centerInside」
如圖pic1五、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大小的圖像,不一樣的是是否保持原圖大小和繪圖的目標不一樣、採起的手段不一樣。