2012-01-20 65 views

回答

49

位圖是位圖圖像的表示形式(類似於java.awt.Image)。 Drawable是「可以繪製的東西」的抽象。它可能是一個位圖(包裝爲BitmapDrawable),但它也可以是純色,其他可繪製對象或任意數量的其他結構的集合。

大多數Android UI框架喜歡使用Drawable對象,而不是Bitmap對象。 View可以接受任何Drawable作爲背景。 ImageView可以顯示前景Drawable。作爲資源存儲的圖像作爲可繪製對象加載。

+3

如果一個bitmapDrawable包裝一個位圖,如果我們調用recycle()它內的位圖?此外,回收()爲API11及更高版本做了什麼? –

+0

@androiddeveloper - 我不確定,但它不會有什麼好處。一旦BitmapDrawable封裝了位圖,可繪製的「擁有」位圖並且應該管理它的生命。如果您調用'recycle()',則會干擾這種關係。充其量,drawable將不會畫任何東西;更可能的是,稍後會拋出某種異常。根據[docs](http://developer.android.com/reference/android/graphics/Bitmap.html#recycle%28%29),使用API​​11 +的'recycle()'可以做同樣的事情:它允許您在知道完成後立即釋放原始像素。 –

+0

他們說那裏它釋放了位圖的本地內存,但我們知道從API 11開始,與位圖相關的所有內容(包括其原始數據)都位於堆內,因此回收看起來像是一件奇怪的事情。 –

28

可繪製的是可以繪製的東西。例如。佈局,向量圖像(線,圓),字體,圖像等等

位圖 - 是特定類型的繪製對象中的哪一個圖像,如:PNG,JPEG或所以

+7

A [位圖](http://developer.android.com/reference/android/graphics/Bitmap.html)('android.graphics.Bitmap')不是[Drawable]的子類(http:// developer。 android.com/reference/android/graphics/drawable/Drawable.html)('android.graphics.drawable.Drawable')。 –

+0

當然,這是我的錯。我的意思是BitmapDrawable – barmaley

+0

似乎有好點 – neferpitou

10

繪製資源

A Drawable資源是可以繪製到屏幕上的圖形的一般概念,您可以使用API​​(如getDrawable(int))檢索該圖形,也可以將其應用於具有諸如android:drawableandroid:icon等屬性的其他XML資源。有幾種不同類型的可繪製的:

  • 位圖文件,位圖圖形文件,文件(.png,.jpg或.gif),請創建一個BitmapDrawable

  • 九補丁文件,A PNG文件與可拉伸區域,以允許圖像尺寸變換基於內容(.9.png),創建一個NinePatchDrawable

  • 層列表,A Drawable管理其他Drawable s的陣列。這些按照數組順序繪製,因此具有最大索引的元素將繪製在頂部,從而創建一個LayerDrawable

  • 狀態列表,一個XML文件引用不同的位圖圖形的不同狀態(例如,使用不同的圖像時,按下按鈕),創建一個StateListDrawable

  • 級別列表,一種XML文件,定義用於管理許多替代Drawable s的Drawable,每個分配的最大數值,創建一個LevelListDrawable

  • 過渡繪製對象,一種XML文件限定Drawable可以交叉衰落2個Drawable資源之間,創建一個TransitionDrawable

  • 插圖可繪製,一種XML文件限定Drawable該鑲石另一Drawable按指定的距離。當View需要比視圖的實際邊界更小的背景Drawble時,這非常有用。

  • 剪輯可繪製,一種XML文件限定Drawable該剪輯基於該Drawable的電流電平值的另一Drawable,創建一個ClipDrawable

  • 尺度繪製對象,一種XML文件限定Drawable改變的另一Drawable基於其電流電平值的大小,創建一個ScaleDrawable

  • 形狀繪製對象,一種XML文件限定的幾何形狀,包括顏色和漸變,創建一個ShapeDrawable

另請參閱動畫資源文檔以瞭解如何創建AnimationDrawable

注意:顏色資源也可以用作DdrawableXML。例如,在創建StateListDrawable時,可以引用android:drawable屬性的顏色資源(android:drawable="@color/green")。

位圖

位圖圖像。 Android支持三種格式的位圖文件:.png(首選),.jpg(可接受),.gif(不鼓勵)。

您可以直接引用位圖文件,使用文件名作爲資源ID,或使用XML創建別名資源ID。

注意:位圖文件可能會在構建過程中通過aapt工具進行無損圖像壓縮自動進行優化。例如,不需要超過256色的真彩色PNG可以通過調色板轉換爲8位PNG。這將產生質量相同的圖像,但需要更少的內存。所以請注意,放置在這個目錄中的圖像二進制文件可以在構建過程中更改。如果您計劃將圖像作爲位流讀取以將其轉換爲位圖,請將圖像放在res/raw/文件夾中,而不要在其中進行優化。

相關問題