2014-04-25 19 views
5

Chciałbym przekonwertować ekran mojej aplikacji i przekonwertować go na Bitmapę. Już wiem, jak przekonwertować widok na bitmapę, ale to nie jest to, czego chcę, ponieważ mój ekran składa się z wielu fragmentów. Dlatego chciałbym móc wziąć ekran i przekonwertować go na mapę bitową ... Pomoc jest bardzo ceniona dzięki.Android Konwertuj bieżący ekran na bitmapę

+1

Zrzut ekranu? https://code.google.com/p/android-screenshot-library/ – shkschneider

+0

Widzisz, nie chcę, aby użytkownik wiedział, że zrzut ekranu został zrobiony. Po prostu przechwyć ekran, załaduj go do mapy bitowej, a następnie ustaw bitmapę w widoku obrazu. – SynerFlow

Odpowiedz

9

Można użyć coś takiego i przekazać układ jako widok;)

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, co robi cache rysunku? Chcę uchwycić ekran nie tylko jednego widoku. Mój ekran jest pofragmentowany, istnieje wiele widoków, które są rozproszone w plikach układu XML, połączone w jeden widok – SynerFlow

+0

Po przekazaniu głównego katalogu lub głównego, wykonuje migawkę tego, co jest na ekranie;) – jackgris

+0

Co robi rysunek cache do zrobienia ? Musisz przeczytać [getDrawingCache] (http://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29) – jackgris

0

View jest Ci układ korzeniowy: -

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

zobaczyć link Więcej informacji: -

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

Android - How to take screenshot programatically

+0

Być może nie przeczytałeś powyższego komentarza. Nie chcę robić zrzutu ekranu. Po prostu zrób z ekranu konwersję na mapę bitową i ustaw jako "ImageBitmap" w ImageView. – SynerFlow

0
View rootView = findViewById(R.id.relative_facebook).getRootView(); 
     rootView.setDrawingCacheEnabled(true); 
     return rootView.getDrawingCache(); 
Powiązane problemy