Рисование виджета на растровое изображение - PullRequest
0 голосов
/ 04 марта 2010

В моем приложении мне нужно нарисовать содержимое виджета на растровом изображении.

Код (псевдо) следующий:

AppWidgetHostView widget;
Bitmap bitmap;
...
widget = pickWidget();
...

bitmap = Bitmap.createBitmap(128, 128, Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
widget.draw(canvas);

Я уверен, что pickWidget () работает нормально - если сделать setContentView (widget); Я получаю виджет отображается правильно на весь экран. Растровое изображение, к которому я рисую, также отображается нормально - если я рисую на холсте, используя drawCircle или выполняю setPixel () на растровом изображении, например, я могу видеть рисунки. Таким образом, проблема связана с widget.draw (), она не оказывает никакого влияния на растровое изображение. Пожалуйста, поделитесь своими мыслями.

Ответы [ 2 ]

1 голос
/ 04 марта 2010

Более простой способ сделать это с помощью DrawingCache вида. Как это:

widget.buildDrawingCache(true);
Bitmap bitmap = widget.getDrawingCache(true);
widget.destroyDrawingCache();

Это даст вам растровое изображение с уже нарисованным видом. Булевы значения, которые передаются, включают масштабирование растрового изображения или нет. Возможно, вам придется изменить эти значения в зависимости от ваших потребностей.

0 голосов
/ 04 марта 2010

Я должен был дать себе еще пару минут :) Задача решена. На самом деле оба метода работали - мне просто нужно было явно вызвать widget.measure, а затем widget.layout, чтобы установить размеры виджета (что, как я полагаю, автоматически выполняется при выполнении setContentView ()). Мое приложение чувствительно к производительности, поэтому хорошо иметь более одного метода на выбор. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...