LayerDrawable для растрового изображения - PullRequest
9 голосов
/ 05 ноября 2010

Я использую LayerDrawable для объединения нескольких Drawable. Теперь я хотел бы экспортировать мой LayerDrawable в файл.

Я пробовал так:

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

Что я могу сделать?

Ответы [ 3 ]

12 голосов
/ 05 ноября 2010

Вы пробовали рисовать Drawable на растровом холсте? Я думаю, что порядок звонков будет выглядеть примерно так:

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

Затем вы можете записать объект Bitmap в выходной поток.

4 голосов
/ 04 августа 2011

Спасибо за помощь.Но новичку, как я, нужен более конкретный код.Я попытался, и это работает для меня следующим образом.

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

В конечном счете, b (Bitmap) - это желаемый комбинированный битовый массив.

3 голосов
/ 05 февраля 2017

Спасибо, что оба человека ответили до меня (@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));
...