0

後で使用するためにレイアウトの内容をビットマップに保存する必要がありますが、私が直面している問題は、レイアウトがデバイスの画面よりも大きいことです。

stackoverflow の質問を参照すると、次のコードにたどり着きました。

private void viewToBitmap(View view) {

    view.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
    view.setDrawingCacheEnabled(false);

    String mPath = Environment.getExternalStorageDirectory().toString() + "/" + name + ".jpg";
    File imageFile = new File(mPath);

    FileOutputStream outputStream = new FileOutputStream(imageFile);
    int quality = 100;
    bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
    outputStream.flush();
    outputStream.close();
}

デバイス画面と同じサイズまたはそれより小さいレイアウトでは意図したとおりに機能しますが、必要なレイアウトを変換しようとすると、次のエラーが発生します。

大きすぎてソフトウェア レイヤー (または描画キャッシュ) に収まらないため、LinearLayout は表示されません。9334080 バイトが必要で、3686400 しか使用できません

これはまったく可能ですか、それともクリエイティブになって、画面に収まる複数のレイアウトを使用して複数のビットマップに個別に保存するなどのことをする必要がありますか?

4

1 に答える 1