android中src和background區別

前景:最近在做引導頁面的時候,發現手機上面看到的圖片都是變形的,我寫的的是background 加載的圖片,然後一直在改動scaleType,發現沒有什麼效果。很是鬱悶。原來是 src 和 background的一直都沒有弄明白,網上找了些資料,特意記錄下來;

ImageView中XML屬性src和background的區別:

background會根據ImageView組件給定的長寬進行拉伸,而src就存放的是原圖的大小,不會進行拉伸。src是圖片內容(前景),bg是背景,可以同時使用。

此外:scaleType只對src起作用;bg可設置透明度,比如在ImageButton中就可以用Android:scaleType控制圖片的縮放方式,示例代碼如下:

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/splash_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/splash_bg"
            android:background="@color/black"
            android:scaleType="centerInside"/>

說明:centerInside表示按比例縮放圖片,使得圖片長 (寬)的小於等於視圖的相應維度。

注意:控制的圖片爲資源而不是背景,即android:src=”@drawable/splash_bg”,而非android:background=”@drawable/splash_bg”。程序中動態加載圖片也類似,如:應該imgView.setImageResource(R.drawable.);而非imgView.setBackgroundResource(R.drawable.);

附:更詳細的scaleType說明:

ImageView的scaleType的屬性有好幾種,分別是matrix(默認)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY

1.android:scaleType=”center”
保持原圖的大小,顯示在ImageView的中心。當原圖的size大於ImageView的size,超過部分裁剪處理。

2.android:scaleType=”centerCrop”
以填滿整個ImageView爲目的,將原圖的中心對準ImageView的中心,等比例放大原圖,直到填滿ImageView爲止(指的是ImageView的寬和高都要填滿),原圖超過ImageView的部分作裁剪處理。

3.android:scaleType=”centerInside”
以原圖完全顯示爲目的,將圖片的內容完整居中顯示,通過按比例縮小原圖的size寬(高)等於或小於ImageView的寬(高)。如果原圖的size本身就小於ImageView的size,則原圖的size不作任何處理,居中顯示在ImageView。

4.android:scaleType=”matrix”
不改變原圖的大小,從ImageView的左上角開始繪製原圖,原圖超過ImageView的部分作裁剪處理。

5.android:scaleType=”fitCenter”
把原圖按比例擴大或縮小到ImageView的ImageView的高度,居中顯示

6.android:scaleType=”fitEnd”
把原圖按比例擴大(縮小)到ImageView的高度,顯示在ImageView的下部分位置

7.android:scaleType=”fitStart”
把原圖按比例擴大(縮小)到ImageView的高度,顯示在ImageView的上部分位置

8.android:scaleType=”fitXY”
把原圖按照指定的大小在View中顯示,拉伸顯示圖片,不保持原比例,填滿ImageView.

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章