1. 程式人生 > >ImageView圖片寬度為控制元件寬度,高度按比例縮放

ImageView圖片寬度為控制元件寬度,高度按比例縮放

寫在前面:本篇文章使用了非同步圖片載入庫Android-Universal-Image-Loader,如果你的專案不使用此庫,本文提供的方法就不能解決你的問題了。

需求說明:顯示多張圖片,每張圖片大小不定,要求圖片顯示寬度為ImageView的寬度,高度按比例縮放,能完全顯示整張圖片。

關於圖片縮放,網上搜索了很多資料,有設定ImageView屬性android:adjustViewBounds和android:scaleType,要麼擷取圖片放大後的一部分顯示,要麼就是原圖縮小顯示,達不到要求的效果。還有在程式碼中設定圖片縮放,太麻煩。最後使用非同步圖片載入庫Android-Universal-Image-Loader來解決這個問題。(專案中以前就使用Android-Universal-Image-Loader來載入網路圖片,現在正好也解決了圖片縮放這個問題。)

關於Android-Universal-Image-Loader的使用及說明請自查資料,這裡不再介紹。

Android-Universal-Image-Loader庫中DisplayImageOptions中的函式imageScaleType(ImageScaleType imageScaleType)是用來設定圖片的縮放方式,引數如下:

ImageScaleType.EXACTLY :影象將完全按比例縮小的目標大小
ImageScaleType.EXACTLY_STRETCHED:圖片會縮放到目標大小完全
ImageScaleType.IN_SAMPLE_INT:影象將被二次取樣的整數倍
ImageScaleType.IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使影象更小的目標大小
ImageScaleType.NONE:圖片不會調整

設定如下:imageScaleType(ImageScaleType.EXACTLY_STRETCHED)

ImageView設定如下:

<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>  //高度也可以設定為match_parent,都一樣

在使用ImageLoader載入圖片時,圖片會按比例縮放到填充滿ImageView的大小。