2014-04-25 16 views
5

Mi piacerebbe convertire uno schermo della mia app e convertirlo in un Bitmap. So già come convertire una vista in una bitmap, ma non è quello che voglio in quanto il mio schermo è composto da molti frammenti. Quindi mi piacerebbe essere in grado di prendere lo schermo e convertirlo in un bitmap ... L'aiuto è molto apprezzato, grazie.Android Converti lo schermo corrente in bitmap

+1

Quindi uno screenshot? https://code.google.com/p/android-screenshot-library/ – shkschneider

+0

vedi, non voglio che l'utente sappia che è stata scattata una schermata. Basta catturare lo schermo caricarlo in una bitmap e quindi impostare la bitmap su una vista immagine – SynerFlow

risposta

9

Si potrebbe usare qualcosa di simile e passare il layout a view;)

public Bitmap takeScreenShot(View view) { 
     // configuramos para que la view almacene la cache en una imagen 
     view.setDrawingCacheEnabled(true); 
     view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); 
     view.buildDrawingCache(); 

     if(view.getDrawingCache() == null) return null; // Verificamos antes de que no sea null 

     // utilizamos esa cache, para crear el bitmap que tendra la imagen de la view actual 
     Bitmap snapshot = Bitmap.createBitmap(view.getDrawingCache()); 
     view.setDrawingCacheEnabled(false); 
     view.destroyDrawingCache(); 

     return snapshot; 
    } 
+0

ok, cosa fa la cache di disegno? Voglio catturare lo schermo non solo una singola vista. Lo schermo è frammentata, ci sono molti punti di vista che sono distribuiti attraverso file di layout xml, fusi insieme in un'unica vista – SynerFlow

+0

Se si passa la radice layout o principale, ci vuole una fotografia di ciò che è sullo schermo;) – jackgris

+0

Ciò che ottiene il disegno di cache fare ? Devi leggere questo [getDrawingCache] (http://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29) – jackgris

0

View si è layout di root: -

View v = view.getRootView(); 
v.setDrawingCacheEnabled(true); 
Bitmap b = v.getDrawingCache(); 
String extr = Environment.getExternalStorageDirectory().toString(); 
File myPath = new File(extr, getString(R.string.free_tiket)+".jpg"); 
FileOutputStream fos = null; 
try { 
    fos = new FileOutputStream(myPath); 
    b.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
    fos.flush(); 
    fos.close(); 
    MediaStore.Images.Media.insertImage(getContentResolver(), b, "Screen", "screen"); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

clicca il link per maggiori informazioni: -

http://code.google.com/p/android-screenshot-library/wiki/DeveloperGuide

Android - How to take screenshot programatically

+0

forse non hai letto il mio commento sopra. Non voglio davvero fare uno screenshot. Basta prendere lo schermo convertirlo in bitmap e impostarlo come 'ImageBitmap' di un ImageView. – SynerFlow

0
View rootView = findViewById(R.id.relative_facebook).getRootView(); 
     rootView.setDrawingCacheEnabled(true); 
     return rootView.getDrawingCache(); 
Problemi correlati