Android Screenshot a la Paint-Buffer

Servus7

Mitglied
Ich möchte einen Screenshot eines Teiles meiner Anwendung machen, um beim neuzeichen die Leistung zu verringern, indem nur ein Bild gerendert werden muss, anstatt lauter Verläufe und Linen. Die Qualität muss deswegen gut sein und der Speicherort nur temporär. Ein abspeichern und laden aus nem Ordner is auch recht lansam. BufferdImage und Robot gehen auf Android nicht.
 
Zuletzt bearbeitet von einem Moderator:

schlingel

Gesperrter Benutzer
Du könntest in deinem onDraw der View die du verwenden möchtest in ein Bitmap zeichnen welches zu per WeakReference im Objekt hältst. Wenn die WeakReference das Bild noch enthält stellst du dieses dar, ansonsten zeichnest du wieder in dein Bitmap.
 

schlingel

Gesperrter Benutzer
Du musst den Container überschreiben den du verwenden willst, also LinearLayout oder RelativeLayout oder was auch immer und im onDraw das Canvas-Objekt verwenden um das Bitmap zu bekommen.
 

Servus7

Mitglied
Ja ich merks grad krieg ne Fehlermeldung bei canvas.setBitmap(); nur wie ändere ich den Container. Ich hab bis jetzt nur Java auf Pc gemacht Android is sehr neu für mich und genau diese feinheiten fehlen mir noch.
 

Servus7

Mitglied
Ok ich habs geschaft:
Java:
myBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(myBitmap);


dann alles einmal zeichen.
Dann nur noch
Java:
 c.drawBitmap(myBitmap).
Geht super und die Performance is der Hammer.
 

schlingel

Gesperrter Benutzer
Du solltest das trotzdem in eine WeakReference packen. Dadurch umgehst du OutOfMemoryError-Exceptions wenn der Speicher knapp wird da WeakReferences vom Compiler eingesammelt werden können.
 

Ähnliche Java Themen

Neue Themen


Oben