方式1: 判斷drawable 是否為BitmapDrawable
- 直接強(qiáng)轉(zhuǎn) Drawable 為 BitmapDrawable, 然后調(diào)用getBitmap() 函數(shù)返回Bitmap
方式2: 使用Canvas 繪制Bitmap
- 創(chuàng)建Bitmap畫(huà)布對(duì)象
- 判斷是否為ColorDrawable , 是的話, width = height =2 ?
- 不是直接按照 drawable 的寬高, 和 ARGB_8888 創(chuàng)建一個(gè) Bitmap
- 調(diào)用 drawable.draw(canvas) 函數(shù)繪制圖像, 并將drawable 保存在 Bitmap 上
private Bitmap getBitmapFromDrawable(Drawable drawable) {
if (drawable == null) {
return null;
}
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
try {
Bitmap bitmap;
//顏色Drawable
if (drawable instanceof ColorDrawable) {
//寬為2, 高為2 ??
bitmap = Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);
} else {
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), BITMAP_CONFIG);
}
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
//將 drawable 的內(nèi)容繪制到 bitmap的canvas 上面去.
drawable.draw(canvas);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}