時々プログラムからスクリーンショットを撮りたくなることがあると思います。ずっとできないと思っていたのだけど実は View で描画したものを
Bitmap として取得することができました。
ステータスバーなどを含んだ画面全体を Bitmap として取得
いわゆるスクリーンショット。View#getRootView | Android Developersを使うためになにか適当な View が必要。
public Bitmap getScreenBitmap(View view){
return getViewBitmap(view.getRootView());
}特定の View を Bitmap として取得
public Bitmap getViewBitmap(View view){
view.setDrawingCacheEnabled(true);
Bitmap cache = view.getDrawingCache();
if(cache == null){
return null;
}
Bitmap bitmap = Bitmap.createBitmap(cache);
view.setDrawingCacheEnabled(false);
return bitmap;
}View#getDrawingCache | Android Developers はシステムの持っている Bitmap の参照を返す。システム側から recycle されるので Bitmap#createBitmap | Android Developers で作り直す必要がある。













