簡単にできますか?、 はい
どのように?
さて、私は先日このための関数を作成しました、そしてそれは本当に簡単です(あなたが外部デバイスへの書き込み許可を持っていることを確認してください)。に「ペイント」するビュー(すべての子ビューも含まれます)を指定するだけでBitmap
、後で、言うようにファイルとして保存するか、アプリのどこかで使用できます。
public void captureView(int viewId,String filename){
//Find the view we are after
View view = (View) findViewById(viewId);
//Create a Bitmap with the same dimensions
Bitmap image = Bitmap.createBitmap(view.getWidth(),
view.getHeight(),
Bitmap.Config.RGB_565);
//Draw the view inside the Bitmap
view.draw(new Canvas(image));
//Store to sdcard
try {
String path = Environment.getExternalStorageDirectory().toString();
File myFile = new File(path,filename);
FileOutputStream out = new FileOutputStream(myFile);
image.compress(Bitmap.CompressFormat.PNG, 90, out); //Output
} catch (Exception e) {
e.printStackTrace();
}
}
注onCreate
ビューが描画される前にビューの幅と高さを取得しようとする可能性があり、ビットマップの寸法を0にできないためエラーが発生する可能性があるため、メソッドでこのコードを実行しようとしないでください。
ビューをそのままキャプチャしますか、それとも作成されたままキャプチャしますか?
最初はよくわかりませんでしたが、少しテストしたところ、表示されるものが得られるものであるように見えます。したがって、起動時の元の配置とは異なる回転または異なるものがある場合は、これがキャプチャに反映されます。これはあなたが求めているものかもしれないし、そうでないかもしれませんが、それが提供するものです。キャプチャされた例を次に示しますLinearLayout
(スクリーンショットやトリミングはなく、デバイスから直接送信されます)。