0

在我的应用程序中,我需要在位图上绘制一个小部件内容。

代码(伪)如下:

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(),它似乎对位图没有任何影响。请分享你的想法。

4

2 回答 2

1

更简单的方法是使用 View 的 DrawingCache。像这样:

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

这将为您提供一个位图,其中已经绘制了视图。传入的布尔值是是否缩放位图。您可能需要根据需要更改这些值。

于 2010-03-03T22:20:47.807 回答
0

我应该给自己多几分钟时间 :) 问题解决了。实际上这两种方法都有效 - 我只需要显式调用 widget.measure 后跟 widget.layout 来设置小部件的大小(我假设,当你执行 setContentView() 时会自动完成)。我的应用程序对性能很敏感,因此最好有多种方法可供选择。谢谢!

于 2010-03-03T23:25:21.403 回答