ImageView 繼承自View組件,主要功能是用於顯示圖片,實際上它不僅僅可以用來顯示圖片,任何Drawable對象都可以使用ImageView來顯示。ImageView可以適用於任何佈局中,並且Android爲其提供了縮放和着色的一些操作。
1. foreground、src 和 background 屬性區別
1)background
指的是背景,foreground
指的是前景,而src
指的是內容;三者可以同時使用;
2)src
填入圖片時,是按照圖片大小直接填充,並不會進行拉伸;而使用background
和foreground
填入圖片,則是會根據ImageView給定的寬度來進行拉伸;
3)background
和foreground
是所有view都有的屬性,總是縮放到view的大小,不受scaleType
影響;而src
是ImageView特有屬性,它會受到scaleType
的影響。
2.adjustViewBounds設置縮放是否保存原圖長寬比
ImageView爲我們提供了adjustViewBounds屬性,用於設置縮放時是否保持原圖長寬比! 單獨設置不起作用,需要配合maxWidth和maxHeight屬性一起使用!而後面這兩個屬性 也是需要adjustViewBounds爲true纔會生效的~
-
android:maxHeight:設置ImageView的最大高度
-
android:maxWidth:設置ImageView的最大寬度
3.scaleType設置縮放類型
android:scaleType用於設置顯示的圖片如何縮放或者移動以適應ImageView的大小 Java代碼中可以通過imageView.setScaleType(ImageView.ScaleType.CENTER);來設置~ 可選值如下:
- fitXY:對圖像的橫向與縱向進行獨立縮放,使得該圖片完全適應ImageView,但是圖片的橫縱比可能會發生改變
- fitStart:保持縱橫比縮放圖片,知道較長的邊與Image的編程相等,縮放完成後將圖片放在ImageView的左上角
- fitCenter:同上,縮放後放於中間;
- fitEnd:同上,縮放後放於右下角;
- center:保持原圖的大小,顯示在ImageView的中心。當原圖的size大於ImageView的size,超過部分裁剪處理。
- centerCrop:保持橫縱比縮放圖片,知道完全覆蓋ImageView,可能會出現圖片的顯示不完全
- centerInside:保持橫縱比縮放圖片,直到ImageView能夠完全地顯示圖片
- matrix:默認值,不改變原圖的大小,從ImageView的左上角開始繪製原圖, 原圖超過ImageView的部分作裁剪處理
ps:一般情況下可以用centerInside來設置縮放類型。