LinearLayout の内容のスクリーンショットを撮ろうとしています。レイアウトには、高さ/幅を可変できるスクロールビューが含まれています。このコードは、レイアウトが大きすぎない場合 (つまり、すべてを表示するために画面からあまりスクロールする必要がない場合) に問題なく機能します。
View v1 = (LinearLayout)theLayout;
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
ただし、キャプチャしようとしている LinearLayout が大きい場合、アプリケーションは v1.getDrawingCache() の null ポインターでクラッシュします。
logcat に次のエラーがあります。
05-11 13:16:20.999: W/View(17218): ビューが大きすぎて描画キャッシュに収まりません。4784400 バイトが必要ですが、3932160 しか使用できません
このレイアウトのスクリーンショットを適切に撮るにはどうすればよいですか? それほど多くのメモリを使用しない別の方法はありますか?