實(shí)例解析Android ImageView的scaleType屬性
這篇隨筆將會簡單的記錄下ImageView這個(gè)控件的一些使用方法,以及其最重要的一個(gè)屬性: scaleType
ImageView這個(gè)控件是用來顯示圖片用的,例如我們可以通過下面這段xml配置來聲明顯示一張圖片:
<ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/ic_launcher"/>
其中src就是引用我們需要使用的圖片,其可以是存放在 assets 目錄下的圖片,也可以是res/drawable目錄下的圖片,還可以是網(wǎng)絡(luò)上的圖片。我們這里是將圖片放在了 res/drawable這個(gè)目錄下,然后通過其自動生成的ID來引用這個(gè)圖片,我們同樣可以在Java代碼中通過ImageView這個(gè)對象來設(shè)置我們要引用的圖片
ImageView imageView = (ImageView)findViewById(R.id.iamgeView1); // 通過setImageResource()來設(shè)置引用的圖片 imageView.setImageResource(R.id.iamgeView1);
接下來我們來看看ImageView中最重要的一個(gè)屬性:scaleType,這個(gè)屬性是用來控制我們的圖片怎樣縮擴(kuò)或者移動來匹配我們和ImageView本身設(shè)置的大小。
其擁有許多的值,我們接下來根據(jù)代碼來看看每個(gè)值所代表的含義:
①fitCenter:這個(gè)值指的是,當(dāng)我這張圖片比ImageView大的時(shí)候,就會按照比例對圖片進(jìn)行縮放,并將圖片居中顯示。如果這張圖片比ImageView小,那么就會根據(jù)比例對圖片進(jìn)行擴(kuò)大,然后將其居中顯示,注意:如果圖片分辨率不是兩個(gè)相等的值,例如480*320,那么因?yàn)榭s放比例不同,fitCenter設(shè)置后,其會根據(jù)小的分辨率進(jìn)行縮小,例如會根據(jù)320來進(jìn)行縮放或者擴(kuò)大
<ImageView android:id="@+id/iamgeView1" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/dog" android:background="#ABCDEF" android:scaleType="fitCenter"/> <ImageView android:id="@+id/imageView2" android:layout_width="100dp" android:layout_height="100dp" android:background="#FEDCBA" android:src="@drawable/ic_launcher" android:scaleType="fitCenter"/>
我們看到,這里引用了兩張圖片,第一張dog圖片是比ImageView大的,第二張ic_launcher是比ImageView小的,我們設(shè)置其scaleType后,其顯示效果如下:
我們看到,因?yàn)榈谝粡垐D片分辨率不是兩個(gè)相等的數(shù),那么就會留出一些邊出來
②fitStart、fitEnd屬性:這個(gè)屬性跟fitCenter類似,當(dāng)圖片大小與ImageView不相等時(shí),其會按照比例對圖片進(jìn)行縮小或者放大,其參考的方向是根據(jù)分辨率大的那一方,例如480*320,則會參考480那方作為上下,如果是fitStart,則會將圖片上邊跟ImageView對其,fitEnd則會將圖片下邊與ImageView對其
<ImageView android:id="@+id/iamgeView1" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/dog" android:background="#ABCDEF" android:scaleType="fitStart"/> <ImageView android:id="@+id/imageView2" android:layout_width="100dp" android:layout_height="100dp" android:background="#FEDCBA" android:src="@drawable/ic_launcher" android:scaleType="fitStart"/>
我們看到,其會根據(jù)480那個(gè)分辨率向上對其,如果設(shè)置成fitStart,反之,設(shè)置成fitEnd,則會向下對其
③center:如果設(shè)置成center的話,那么圖片就會截取中間的那部分顯示在ImageView里面,不會對圖片進(jìn)行縮小或者放大
<ImageView android:id="@+id/iamgeView1" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/dog" android:background="#ABCDEF" android:scaleType="center"/> <ImageView android:id="@+id/imageView2" android:layout_width="100dp" android:layout_height="100dp" android:background="#FEDCBA" android:src="@drawable/ic_launcher" android:scaleType="center"/>
④centerInside:設(shè)置這個(gè)屬性值后,如果圖片的大小比ImageView大,那么就根據(jù)比例對圖片進(jìn)行縮小并將其居中顯示,如果圖片比ImageView小,那么則不會對圖片進(jìn)行擴(kuò)大處理,而是直接對其進(jìn)行居中顯示:
<ImageView android:id="@+id/iamgeView1" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/dog" android:background="#ABCDEF" android:scaleType="centerInside"/> <ImageView android:id="@+id/imageView2" android:layout_width="100dp" android:layout_height="100dp" android:background="#FEDCBA" android:src="@drawable/ic_launcher" android:scaleType="centerInside"/>
⑤centerCrop:如果圖片比ImageView大,那么則會對其進(jìn)行縮小,但是并不會像fitCenter或者centerInside那樣是根據(jù)比例縮放,centerCrop設(shè)置后,其縮放的時(shí)候會將整個(gè)ImageView的邊都占據(jù)滿,不會留出空隙,然后再將圖片居中顯示,如果圖片小的話,就會對其進(jìn)行擴(kuò)大,并占滿ImageView的邊框,再居中顯示:
<ImageView android:id="@+id/iamgeView1" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/dog" android:background="#ABCDEF" android:scaleType="centerCrop"/> <ImageView android:id="@+id/imageView2" android:layout_width="100dp" android:layout_height="100dp" android:background="#FEDCBA" android:src="@drawable/ic_launcher" android:scaleType="centerCrop"/>
我們同樣可以在java代碼中來設(shè)置scaleType這個(gè)屬性:
ImageView imageView = (ImageView)findViewById(R.id.iamgeView1); imageView.setScaleType(ScaleType.CENTER_CROP);
這幾個(gè)就是我們常用的幾個(gè)scaleType屬性,我們可以根據(jù)需要來設(shè)置不同的屬性值來達(dá)到圖片和ImageView大小匹配的效果
相關(guān)文章
Android CrashHandler編寫自己的異常捕獲的方法
這篇文章主要介紹了Android CrashHandler編寫自己的異常捕獲的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12詳解Android Studio正式簽名進(jìn)行調(diào)試的實(shí)現(xiàn)步驟
這篇文章主要介紹了詳解Android Studio正式簽名進(jìn)行調(diào)試的實(shí)現(xiàn)步驟的相關(guān)資料,需要的朋友可以參考下2017-07-07mac系統(tǒng)下載、安裝、使用AndroidStudio
本文給大家介紹的是在Mac系統(tǒng)中下載安裝以及使用AndroidStudio的詳細(xì)教程,非常的實(shí)用,有需要的小伙伴可以參考下2017-10-10Android Drawerlayout實(shí)現(xiàn)側(cè)滑菜單效果
這篇文章主要為大家詳細(xì)介紹了Android Drawerlayout實(shí)現(xiàn)側(cè)滑菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android進(jìn)階之使用時(shí)間戳計(jì)算時(shí)間差
這篇文章主要為大家詳細(xì)介紹了Android進(jìn)階之使用時(shí)間戳計(jì)算時(shí)間差,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12