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
risposta
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;
}
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
Se si passa la radice layout o principale, ci vuole una fotografia di ciò che è sullo schermo;) – jackgris
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
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
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
View rootView = findViewById(R.id.relative_facebook).getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();
Quindi uno screenshot? https://code.google.com/p/android-screenshot-library/ – shkschneider
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