我們在用ImageView顯示圖片時,很多情況下圖片的大小與ImageView的尺寸不是完全一樣的。這時就涉及到該如何設定顯示圖片了。
ImageView有個重要的屬性是ScaleType,該屬性用以表示顯示圖片的方式,共有很多種取值。另外也可以在xml檔案中設定ImageView的android:scaleType屬性達到調整效果。
這裡我們介紹各種設定的含義:
1、ScaleType.CENTER(對應xml檔案中為android:scaleType="center")
圖片將位於View的中間顯示,但不進行縮放,如果圖片大小大於ImageView控制元件,則擷取圖片中間部分;若小於,則直接將圖片居中顯示。
2、ScaleType.FIT_CENTER(對應xml檔案中為android:scaleType="fitCenter")
ImageView的預設狀態,大圖等比例縮小,使整幅圖能夠居中顯示在ImageView中;小圖等比例放大,同樣要整體居中顯示在ImageView中。
3、ScaleType.CENTER_CROP(對應xml檔案中為android:scaleType="centerCrop")
讓影像的短邊與ImageView對應的邊長度保持一致(可能是放大或縮小),然後按照短邊放大或縮小的比例對影像的另外一邊進行同比例放大或縮小。
注意:這不像FIT_CENTER會等比縮放。會導致圖片縮放後長、寬比例與原來的不一致。
最後擷取縮放後圖片的中間部分顯示。
這在有些場景下還是有用的,比如需要圖片充滿整個ImageView,但對縮放後失真或擷取部分圖片可以忍受。
4、ScaleType.FIT_XY(對應xml檔案中為android:scaleType="fitXY")
將圖片非等比例縮放到大小與ImageView相同。相比CENTER_CROP,這樣既能保證圖片充滿整個ImageView. 又能保證長和寬的縮放相互不影響。
雖然也可能會導致比例縮放不一致,但最後不會導致影像被裁減。
5、ScaleType.CENTER_INSIDE(對應xml檔案中為android:scaleType="centerInside")
將圖片大小大於ImageView的圖片進行等比例縮小,直到整幅圖能夠居中顯示在ImageView中;小於ImageView的圖片不變,直接居中顯示,不放大。
對於尺寸大於ImageView的圖片,效果等同FIT_CENTER,都是等比縮小。
6、還有其它幾種情況,不太常用,這裡簡單說下
ScaleType.FIT_END:縮放方式同FIT_CENTER,只是將圖片顯示在右方或下方,而不是居中。
ScaleType.FIT_START:縮放方式同FIT_CENTER,只是將圖片顯示在左方或上方,而不是居中。
ScaleType.MATRIX:是根據一個3x3的矩陣對其中圖片進行縮放