SNSなどへのシェア機能などで、画面のスクリーンショットを共有したかった。
Viewごとでキャプチャできるようなので、その時の備忘録φ(..)メモメモ
View view = ...; // スクリーンショットを取りたいView // Viewのスクリーンショットを取得 File file = new File(dir, "tmp_image.png"); try (FileOutputStream fos = new FileOutputStream(file, false)) { view.setDrawingCacheEnabled(true); // キャッシュを取得する設定にする view.destroyDrawingCache(); // 既存のキャッシュをクリアする Bitmap capture = view.getDrawingCache(); // 画像のフォーマットと画質と出力先を指定して保存 capture.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); view.setDrawingCacheEnabled(false); } catch (Exception e) { file = null; } // 共有する処理 ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(activity); builder.setText("共有するメッセージ"); if (file != null) { // 画像がある場合 builder.setType("image/png"); builder.addStream(Uri.fromFile(file)); } else { // 画像がない場合 builder.setType("text/plain"); } builder.startChooser();