src屬性和background屬性的區別:
①background通常指的都是背景,而src指的是內容
②當使用src填入圖片時,是按照圖片大小直接填充,并不會進行拉伸,而使用background填入圖片,則是會根據ImageView給定的寬度來進行拉伸
寫代碼驗證了一下
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/collect" />
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:background="@drawable/collect" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/collect" />
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:src="@drawable/collect" />
解決拉伸導致變形的方法
剛才第二張圖片因為拉伸導致變形了,可以通過drawable的Bitmap資源文件來完成,然后blackground屬性設置為該文件
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/col"
android:gravity="top"
android:src="@drawable/collect"
android:tileMode="disabled" >
</bitmap>
android:tileMode="disabled" 禁止平鋪
設置透明度
setAlpha這個屬性,只有src時才是有效果的
adjustViewBounds設置縮放是否保存原圖長寬比
ImageView提供了adjustViewBounds屬性,用于設置縮放時是否保持原圖長寬比, 單獨設置不起作用,需要配合maxWidth和maxHeight屬性一起使用.而后面這兩個屬性也是需要adjustViewBounds為true才會生效.
android:maxHeight:設置ImageView的最大高度
android:maxWidth:設置ImageView的最大寬度
<!-- 正常的圖片 -->
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5px"
android:src="@drawable/collect" />
<!-- 限制了最大寬度與高度,并且設置了調整邊界來保持所顯示圖像的長寬比-->
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:adjustViewBounds="true"
android:maxHeight="50dp"
android:maxWidth="50dp"
android:src="@drawable/collect" />
scaleType設置縮放類型
fitXY:對圖像的橫向與縱向進行獨立縮放,使得該圖片完全適應ImageView,但是圖片的橫縱比可能會發生改變
fitStart:保持縱橫比縮放圖片,知道較長的邊與Image的編程相等,縮放完成后將圖片放在ImageView的左上角
fitCenter:同上,縮放后放于中間;
fitEnd:同上,縮放后放于右下角;
center:保持原圖的大小,顯示在ImageView的中心。當原圖的size大于ImageView的size,超過部分裁剪處理。
centerCrop:保持橫縱比縮放圖片,知道完全覆蓋ImageView,可能會出現圖片的顯示不完全
centerInside:保持橫縱比縮放圖片,直到ImageView能夠完全地顯示圖片
matrix:默認值,不改變原圖的大小,從ImageView的左上角開始繪制原圖, 原圖超過ImageView的部分作裁剪處理