LayerDrawable到位图

时间:2010-11-04 21:15:01

标签: android bitmap drawable

我正在使用LayerDrawable来合并多个Drawable。现在,我想将LayerDrawable导出到文件中。

我试过这种方式:

Bitmap b = ((BitmapDrawable)myLayerDrawable).getBitmap();
--> ClassCastException...

我该怎么办?

4 个答案:

答案 0 :(得分:12)

您是否尝试将Drawable绘制到位图画布?我认为通话顺序会像:

Bitmap b = Bitmap.createBitmap(int width, int height, Bitmap.Config config);
myLayerDrawable.draw(new Canvas(b));

然后,您可以将Bitmap对象写入输出流。

答案 1 :(得分:4)

感谢您的帮助。但像我这样的初学者需要一些更具体的代码。我试过并为我工作以下。

Bitmap b = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
layerDrawable.setBounds(0, 0, getWidth(), getHeight());
layerDrawable.draw(new Canvas(b));

最终b(位图)是所需的组合位图。

答案 2 :(得分:3)

感谢两个人在我面前回答(@Kyle和@Anjum)。灵感来自他们的答案......这对我的案件很有用:

final int width = myLayerDrawable.getIntrinsicWidth();
final int height = myLayerDrawable.getIntrinsicHeight();

final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
myLayerDrawable.setBounds(0, 0, width, height);
myLayerDrawable.draw(new Canvas(bitmap));

答案 3 :(得分:0)

如果有人想要 @ Mir-Ismaili的答案的kotlin版本

val height = layerDrawable.intrinsicHeight
val width = layerDrawable.intrinsicWidth
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
layerDrawable.setBounds(0, 0, width, height)
layerDrawable.draw(Canvas(bitmap))