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
Antwort
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;
}
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
Wenn Sie das Layout-Root oder Haupt übergeben, macht es einen Snapshot von dem, was auf dem Bildschirm ist;) – jackgris
Was bekommt Zeichnung Cache tun ? Sie müssen dies lesen [getDrawingCache] (http://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29) – jackgris
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
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
View rootView = findViewById(R.id.relative_facebook).getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();
Also ein Screenshot? https://code.google.com/p/android-screenshot-library/ – shkschneider
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