にプログラム的に作成されたビューを描く:私は、プログラム的に作成したビューのビットマップを作るので、好きに描画キャッシュを使用しようとしていますビットマップ
LinearLayout view = new LinearLayout(context);
view.setBackground(context.getResources().getColor(R.color.green));
view.setDrawingCacheEnabled(true);
int width = View.MeasureSpec.makeMeasureSpec(800, View.MeasureSpec.EXACTLY);
int height = View.MeasureSpec.makeMeasureSpec(600, View.MeasureSpec.EXACTLY);
view.measure(w, h);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
は、私は、出力800×600グリーンビットマップにそれを期待します。代わりに800x600の白いビットマップが得られます。私は間違って何をしていますか? @CommonsWareへ
を解決しますそのようにその場でビューのサイズを変更してください。システムが設定されていません。 –
@GabeSechan:実際、それはOKであるはずです。私はインストルメンテーションテストでそれをやっています。 – CommonsWare
「800x600の緑のビットマップを出力すると思います」 - なぜですか? 'LinearLayout'は魔法のように緑色ではなく、緑色にするためのコードはありません。それを超えて、あなたはどこにでも描いていません。すべての描画キャッシュの内容を取り除き、 'Bitmap'に裏打ちされた' Canvas'を作成し、その 'Canvas'へのビューを' draw() 'します。 'Bitmap'は図面の結果を含みます。 – CommonsWare