Android Drawable —Bitmap xml

Android支持三種位圖格式:.png(推薦使用)、.jpg(可以接受)、.gif(不推薦)。

你可以使用位圖文件的文件名作為資源ID來直接引用位圖文件,也可以在XML中定義一個資源別名。

註意:在程序build的過程中位圖文件會被aapt工具自動無損壓縮來優化。比如,如果一個全彩的PNG圖片所需要的色彩不超過256色,aapt工具就會使用一個調色板來將該圖轉換成一張8位的PNG圖。畫面質量並沒有變化,但是所需的存儲空間卻減少瞭。因此,要註意到在build的過程中這個目錄下的圖片的二進制數據會發生變化。如果你打算使用比特流的方式讀取圖片來轉換成位圖資源,請將這些圖片放在res/raw/目錄下。在/res/raw/目錄下的圖片不會被優化。

當我們將圖片文件放在res/drawable/目錄下時,Android就會為每一張圖片創建一個Drawable資源。這些資源最終將被編譯成BitmapDrawable對象。在Java代碼中,通過R.drawable.filename的形式引用這些資源;在XML中,使用@[package]:drawable/filename的形式來引用。

例:

比如我們有一張圖片存放為res/drawable/myimage.png,下面這個佈局文件將該圖片應用到一個View組件上:

 

而下面的代碼則是以Drawable的形式來獲取圖像:

Resources res = getResources();  
Drawable drawable = res.getDrawable(R.drawable.myimage);  

XML Bitmap是定義在XML文件當中,指向一個位圖文件的資源。這樣就為原生的位圖文件起瞭一個別名。在XML定義時可以為位圖定制諸如圖像抖動或是平鋪等額外屬性。

我們可以使用節點作為節點的子節點。比如,當我們要創建一個state list 或者 layer list時,可以不在節點使用android:drawable屬性而是將一個節點嵌入到節點當中來定義drawble引用。

XML Bitmap最終將被編譯成BitmapDrawable對象。在Java代碼中通過R.drawable.filename的形式訪問,在XML當中使用@[package:]drawable/filename的形式來訪問。

XML bitmap語法:

  
 


android:antialias——開啟或關閉抗鋸齒

android:dither——開啟或關閉圖像抖動(如果位圖與顯示屏幕的像素配置不相同時會用到,比如一張ARGB 8888位圖和一個RGB565的顯示屏)

android:filter——開啟或關閉濾鏡。當收縮或是拉伸位圖時使用這個來使位圖看上去更平滑。

android:gravity——當位圖大小比它所在的容器小的時候,使用這個屬性來決定位圖在容器中的位置。可取的值有:top、bottom、left、right、center_vertical、fill_vertical(縱向縮放位圖使之與容器等高)、center_horizontal、fill_horizontal(橫向縮放位圖使之與容器等寬)、center、fill(縱向與橫向都縮放使之完全鋪滿容器,這也是默認值)、clip_vertical(呃。。。)、clip_horizontal(呃。。。)。

android:tileMode——定義平鋪模式。如果定義瞭,那麼位圖將會重復,並且Gravity屬性將失效。可取的值有disabled(默認值,不啟用平鋪)、clamp(復制位圖邊緣的顏色來填充容器剩下的空白部分)、repeat(復制整個位圖來填充容器)、mirror(與repeat類似,但是是交替的鏡像復制,即相鄰的兩張是鏡像對稱的)

比如:

  
 

發佈留言