2014-04-25 19 views
5

Ich möchte einen Bildschirm meiner App konvertieren und es in eine Bitmap konvertieren. Ich weiß bereits, wie man eine Ansicht in eine Bitmap umwandelt, aber das ist nicht was ich will, da mein Bildschirm aus vielen Fragmenten besteht. Daher würde ich gerne in der Lage sein, den Bildschirm zu nehmen und es in eine Bitmap umzuwandeln ... Hilfe wird sehr geschätzt, danke.Android Aktuellen Bildschirm in Bitmap konvertieren

+1

Also ein Screenshot? https://code.google.com/p/android-screenshot-library/ – shkschneider

+0

Sie sehen, ich möchte nicht der Benutzer wissen, dass ein Screenshot erstellt wurde. Nehmen Sie einfach den Bildschirm auf, laden Sie ihn in eine Bitmap und stellen Sie dann die Bitmap auf eine Bildansicht ein – SynerFlow

Antwort

9

Sie so etwas wie dies nutzen könnten und das Layout passieren, wie eine Ansicht;)

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, was bringt der Zeichnungscache? Ich möchte den Bildschirm nicht nur eine einzelne Ansicht erfassen. Mein Bildschirm ist fragmentiert, es gibt viele Ansichten, die über xml-Layout-Dateien verteilt sind, zusammen in einer Ansicht – SynerFlow

+0

Wenn Sie das Layout-Root oder Haupt übergeben, macht es einen Snapshot von dem, was auf dem Bildschirm ist;) – jackgris

+0

Was bekommt Zeichnung Cache tun ? Sie müssen dies lesen [getDrawingCache] (http://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29) – jackgris

0

Ansicht ist, dass Sie root-Layout: -

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

für weitere Informationen siehe Link: -

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

Android - How to take screenshot programatically

+0

Vielleicht haben Sie meinen obigen Kommentar nicht gelesen. Ich möchte eigentlich keinen Screenshot machen. Nehmen Sie den Bildschirm einfach in Bitmap um und setzen Sie ihn als 'ImageBitmap' eines ImageViews. – SynerFlow

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