drawable-作為Android中常見的圖形對象,它可以加載常見格式的圖像,例如GIF、PNG、JPG,當然,它還支持BMP,當然,它還提供壹些高級視覺對象,例如漸變和圖形。
位圖是可繪制的。可繪制不壹定是位圖。就像所有的拇指都是手指,但並不是所有的手指都是拇指。
位圖可繪制。可繪制不壹定是位圖。就像拇指是手指壹樣,但並不是所有的手指都是拇指。
API規定:API規定:
雖然通常對應用程序不可見,但可繪制對象可以采取多種形式:盡管通常對應用程序不可見,但可繪制對象可以采取多種形式:
位圖:簡化的可繪制圖像,png或JPEG圖像。位圖:壹種簡化的可繪制的PNG或JPEG圖像。
nine Patch:PNG格式的壹個擴展,允許它指定有關如何拉伸它並在其中放置東西的信息。
Shape:包含簡單的繪圖命令而不是原始位圖,在某些情況下可以更好地調整大小。
Layers:壹個復合drawable,它在彼此之上繪制多個底層drawable。
States:壹個復合drawable,它根據狀態從壹組drawable中選擇壹個。
等級:壹種復合可抽取物,根據其等級從壹組可抽取物中選擇壹個。
Scale:具有單個子drawable的復合drawable,其整體大小根據當前級別進行修改。
總結:
對比度項顯示清晰度占用內存支持縮放支持色相色差調整支持旋轉支持透明色繪制速度支持像素操作。
位圖大小相同,是的,是的,是的,是的,是的,是的,是的,是的。
Drawable同樣很小。是的,不,是的,是的,快速不。
Drawable在內存占用和繪制速度上優於位圖。
//將位圖轉換為可繪制的
位圖位圖=新位圖(...);
Drawable drawable =新的BitmapDrawable(位圖);
//將Drawable轉換為位圖
drawable d = images list . get(0);
位圖bitmap =((BitmapDrawable)d)。get bitmap();
//1、可繪制→位圖
公共靜態位圖Drawable tobitmap(Drawable Drawable ){
位圖位圖=位圖
。創建位圖(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity()!=像素格式。不透明?位圖。配置ARGB_8888
:位圖。配置RGB _ 565);
Canvas canvas =新畫布(位圖);
//canvas.setBitmap(位圖);
draw able . set bounds(0,0,drawable.getIntrinsicWidth(),draw able . getintrinsicheight());
drawable.draw(畫布);
返回位圖;
}
//2.從資源中獲取位圖。
resources RES = get resources();
bitmap BMP = bitmapfactory . decode resource(RES,r . drawable . pic);
//3、位圖→字節【】
專用字節【】位圖2字節(位圖BM ){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(位圖。CompressFormat.PNG,100;
return baos . tobytearray();
}
//4、字節【】→位圖
專用位圖字節數Bimap(字節【】b ){
if(b .長度!=0){
返回bitmapfactory . decodebytearray(b,0,b . length);
}
否則{
返回null
}
}