一、如何創建一個BitmapDrawable對象
Bitmap,代表一個位圖圖像,Android支持三種格式的位圖圖像:.png (preferred),.jpg (acceptable), .gif (discouraged)。
括號裏的說明,代表這三種格式的圖片在Android中的支持情況,.png格式圖片優先,.jpg格式也可以,但是效果沒有.png好,.gif支持最差。
可以直接使用圖片的名稱作爲資源ID,來直接引用一個位圖圖片。也可以再XML文件中創建一個資源別名的ID。
在構建應用的時候,Bitmap文件可能會被appt工具壓縮自動優化爲無損圖像。例如,一個真彩色PNG,不需要超過256的顏色可以被轉換成一個8位PNG和調色板。這將導致一個圖像質量相同,但這需要更少的內存。所以要意識到,在drawable目錄中圖像的二進制文件在構建程序時可以改變。如果你打算讀一個圖像作爲字節流並將它轉換成一個位圖,把你的圖片放在在res /raw/文件夾裏,在那裏他們不會被優化。
1、通過Bitmap File
一個bitmap文件就是一個.png、.jpg,.gif格式的文件。Android會對存儲在res/drawable/目錄下的這些文件創建一個Drawable資源。
文件位置:
res/drawable/filename.png
(.png
, .jpg
, or .gif
) 文件名即資源的ID。
編譯資源數據類型:
指向BitmapDrawable類型的指針。
資源引用:
- In Java:
R.drawable.filename
In XML:@[package:]drawable/filename
- 示例:
-
有這樣存儲的圖片
res/drawable/myimage.png
,在layout xml文件中將他顯示在視圖上。<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
在java代碼中檢索出爲一個Drawable對象。
- Resources res=getResources();
- Drawable drawable = res.getDrawable(R.drawable.<span class="atv">myimage</span>);
- //實際上這是一個BitmapDrawable對象
- BitmapDrawable bitmapDrawable=(BitmapDrawable)drawable;
- //可以在調用getBitmap方法,得到這個位圖
- Bitmap bitmap=bitmapDrawable.getBitmap();
2、通過XML Bitmap
一個XML bitmap是一個在XML文件中定義的指向一個bitmap文件的資源。其效果是作爲一個原始位圖文件的別名,並且可以指定一些額外的屬性。
注意:你可以在<item>節點中使用<bitmap>作爲它的子節點。比如,當你定義一個state list或者layer list的時候,可以包括一個android:drawable
屬性
Note: You can use a <bitmap>
element as a child of an<item>
element. Forexample, when creating astate list orlayer
list,you can exclude theandroid:drawable
attribute from an<item>
element and nest a<bitmap>
inside it that defines the drawable item.
- 文件位置:
res/drawable/filename.xml
filename作爲資源的ID- 編譯資源類型
- 指向BitmapDrawable類型的指針
- 資源引用
- In Java:
R.drawable.filename
In XML:@[package:]drawable/filename
語法:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:antialias=["true" | "false"] android:dither=["true" | "false"] android:filter=["true" | "false"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
- 節點介紹:
-
示例:
<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
- 參考:
二、BitmapDrawable的使用
一個BitmapDrawable就是封裝了一個位圖。直接以文件的方式,就是封裝了一個原始的位圖。以Xml方式,可以對原始的位圖進行一系列的處理,比如說抗鋸齒,拉伸,對齊等等。
要了解BitmapDrawable的使用,還需要明白Bitmap、BitmapFactory等類。Bitmap代表了一個原始的位圖,並且可以對位圖進行一系列的變換操作。BitmapFactory提供一系列的方法用於產生一個Bitmap對象。多用在Canvas中。
關於繪圖和位圖變換以後再學習。BitmapDrawable的使用比較簡單,就是在其他的xml文件中直接引用就可以了,不過要注意在xml中定義BitmapDrawable各個屬性使用和含義。
轉自:http://blog.csdn.net/lonelyroamer/article/details/8147542