我GOOGLE了,但我找不到任何文章來描述Android中的位圖和Drawable之間的區別。Android中的Bitmap和Drawable有什麼區別?
回答
位圖是位圖圖像的表示形式(類似於java.awt.Image)。 Drawable是「可以繪製的東西」的抽象。它可能是一個位圖(包裝爲BitmapDrawable
),但它也可以是純色,其他可繪製對象或任意數量的其他結構的集合。
大多數Android UI框架喜歡使用Drawable對象,而不是Bitmap對象。 View可以接受任何Drawable作爲背景。 ImageView可以顯示前景Drawable。作爲資源存儲的圖像作爲可繪製對象加載。
如果一個bitmapDrawable包裝一個位圖,如果我們調用recycle()它內的位圖?此外,回收()爲API11及更高版本做了什麼? –
@androiddeveloper - 我不確定,但它不會有什麼好處。一旦BitmapDrawable封裝了位圖,可繪製的「擁有」位圖並且應該管理它的生命。如果您調用'recycle()',則會干擾這種關係。充其量,drawable將不會畫任何東西;更可能的是,稍後會拋出某種異常。根據[docs](http://developer.android.com/reference/android/graphics/Bitmap.html#recycle%28%29),使用API11 +的'recycle()'可以做同樣的事情:它允許您在知道完成後立即釋放原始像素。 –
他們說那裏它釋放了位圖的本地內存,但我們知道從API 11開始,與位圖相關的所有內容(包括其原始數據)都位於堆內,因此回收看起來像是一件奇怪的事情。 –
可繪製的是可以繪製的東西。例如。佈局,向量圖像(線,圓),字體,圖像等等
位圖 - 是特定類型的繪製對象中的哪一個圖像,如:PNG,JPEG或所以
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')。 –
當然,這是我的錯。我的意思是BitmapDrawable – barmaley
似乎有好點 – neferpitou
繪製資源
A Drawable
資源是可以繪製到屏幕上的圖形的一般概念,您可以使用API(如getDrawable(int)
)檢索該圖形,也可以將其應用於具有諸如android:drawable
和android: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
。
注意:顏色資源也可以用作Ddrawable
的XML
。例如,在創建StateListDrawable
時,可以引用android:drawable
屬性的顏色資源(android:drawable="@color/green"
)。
位圖
位圖圖像。 Android支持三種格式的位圖文件:.png(首選),.jpg(可接受),.gif(不鼓勵)。
您可以直接引用位圖文件,使用文件名作爲資源ID,或使用XML創建別名資源ID。
注意:位圖文件可能會在構建過程中通過aapt工具進行無損圖像壓縮自動進行優化。例如,不需要超過256色的真彩色PNG可以通過調色板轉換爲8位PNG。這將產生質量相同的圖像,但需要更少的內存。所以請注意,放置在這個目錄中的圖像二進制文件可以在構建過程中更改。如果您計劃將圖像作爲位流讀取以將其轉換爲位圖,請將圖像放在res/raw/
文件夾中,而不要在其中進行優化。
- 1. Bitmap,BitmapDrawable和Drawable有什麼區別?
- 2. @ r $ drawable和@drawable有什麼區別?
- 3. drawable和drawable-mdpi的區別
- 4. 屏蔽Android上的Drawable/Bitmap
- 5. 把圖像放在drawable和drawable-nodpi文件夾中有什麼區別?
- 6. 使用BITMAP :: bmBits和GetDIBits有什麼區別?
- 7. Android中Adapter和AdapterView有什麼區別?
- 8. android:和android之間有什麼區別:
- 9. android的abc.db和abc.sqlite有什麼區別?
- 10. 有什麼區別`和$(Bash中有什麼區別?
- 11. 解釋drawable,drawable-ldpi,drawable-mdpi和drawable-hdpi之間的區別
- 12. android intents有什麼區別?
- 13. Android。 ShapeDrawable和GradientDrawable有什麼區別?
- 14. Android ICS和Jelly Bean有什麼區別?
- 15. Android | setOnClickListener和setOnTouchListener有什麼區別?
- 16. android:layout_width和android有什麼區別:width
- 17. ADT和Android SDK有什麼區別?
- 18. android:gravity和android有什麼區別:layout_gravity
- 19. Android:'orientation'和'screenLayout'有什麼區別?
- 20. Android SearchView:setOnFocusChangeListener()和setOnQueryTextFocusChangeListener有什麼區別?
- 21. ANR和Android崩潰有什麼區別?
- 22. roboto-android和roboto-unhinted有什麼區別?
- 23. aosp和android pdk有什麼區別?
- 24. Android JPEG和libjpeg有什麼區別?
- 25. Android中的intentFilter類別和intentfilter操作有什麼區別?
- 26. 什麼@android之間的區別:和android:
- 27. 有什麼區別? :和||
- 28. &&和||有什麼區別?
- 29. 「/」和「/ *」有什麼區別?
- 30. 有什麼區別:。!和:r!?
此解決方案應該能夠回答你的問題:[解決方案](http://stackoverflow.com/a/5877202/813207) – Jrom