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

これを行う簡単な方法は、ビューの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 に答える