ImageView控件中有個屬性叫scaleType,scaleType用來控制在ImageView上顯示的圖片樣式。
ImageView提供了以下方法選擇scaleType的樣式
public void setScaleType (ImageView.ScaleType scaleType)
相關的xml屬性:
android:scaleType
接下來我們使用圖片來演示各個樣式的顯示效果
原圖片:(1920 * 1200)
1.CENTER (android:scaleType="center")
按圖片原來的大小和比例居中顯示,當圖片的寬/高超過了View設置的寬高時,則截取圖片的居中部分顯示。當圖片的寬/高沒超過View設置的寬/高時則不截取。
2.CENTER_CROP (android:scaleType="centerCrop")
讓圖片的寬/高等於View設置的寬/高,保持圖片的比例並居中顯示。填滿View設置的寬和高
3.CENTER_INSIDE (android:scaleType="cneterInside")
將圖片按比例完全顯示出來,並且居中,使得圖片的寬/高等於或小於View設置的寬/高。如果原圖的寬/高本身就小於View設置的寬/高,則原圖的寬高不作任何處理。
4.FIT_CENTER (android:scaleType="fitCenter")
基本和CENTER_INSID一樣,不同的是,CENTER_INSIDE對於原圖比View小的圖片不做擴大處理,而FIT_CENTER則會做擴大處理以填充寬/高
5.FIT_END (android:scaleType="fitEnd")
和FIT_CENTER處理圖片的方式一致,顯示的位置在View的底部或者右邊。
6.FIT_START (android:scaleType="fitStart")
和FIT_CENTER處理圖片的方式一致,顯示的位置在View的頂部或者左邊。
7.FIT_XY (android:scaleType="fitXY")
把圖片顯示的寬高等於View設置的寬高,填滿View控件,不保持圖片的比例。
8.MATRIX (android:scaleType="matrix")
對圖片不進行處理,顯示的時候從圖片的左上角進行顯示,超過View寬/高的部分做剪裁處理。
在處理listView或者gridView中顯示的圖片時,圖片大小都應該要一樣大才好看,建議使用centerCrop或者fitXY,需要保持圖片比例就使用centerCrop,不需要則使用fitXY。