2017-09-09 2 views
0

Je dois enregistrer le contenu d'une mise en page sur un bitmap pour un usage ultérieur, mais le problème auquel je suis confronté est que cette mise en page est beaucoup plus grande que l'écran de l'appareil.Enregistrer une mise en page plus grande que l'écran de l'appareil pour bitmap

Naviguer à travers des questions stackoverflow Je suis venu le code suivant:

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(); 
} 

Il fonctionne comme prévu pour les dispositions qui sont de la même taille ou plus petit que l'écran de l'appareil, mais lorsque je tente de convertir la mise en page J'ai besoin, je reçois l'erreur suivante:

LinearLayout not displayed because it is too large to fit into a software layer (or drawing cache), needs 9334080 bytes, only 3686400 available

est-ce même possible du tout ou je vais devoir faire preuve de créativité et de faire quelque chose comme utiliser plusieurs configurations qui entrent dans l'écran et enregistrer en plusieurs bitmaps séparément?

Répondre

0

Créer une image bitmap. Créer une toile qui attire à elle. Appelez onDraw de votre mise en page, en passant dans ce Canvas. Il va dessiner la mise en page à l'image bitmap. Bien sûr, je suppose que vous avez assez de mémoire pour allouer cette bitmap. Sinon, vous n'avez pas de chance.