T
Tom299
Stammgast
- 122
Hallo,
ich hab mir eine kleine App gebastelt, wo ich drauf malen / schreiben kann (zwecks Unterschrift). Dafür hab ich einfach ne View genommen und erzeuge eine Bitmap und ein Canvas und male darauf.
Weiterhin hab ich eine Load- und Save-Funktion drin, um das aktuelle Bitmap zu Speichern oder zu Laden. Das klappt alles wunderbar.
Jetzt wollte ich eine Undo-Funktion einbauen, um z.B. die letzten 5 Schritte rückgängig zu machen. Sprich, die letzten 5 Bitmaps muß ich mir merken und bei einem Undo das vorletzte anzeigen.
Problem ist nun: ich hab die Bitmaps in eine ArrayList gelegt:
die Bilder sind auch in der Liste vorhanden. Wenn ich allerdings nun ein Bild aus der Liste nehme, und genau wie beim Laden den gleichen Code nehme, um das Undo-Bild anzuzeigen, passiert einfach NICHTS.
hier das laden:
hier undo:
Der einzige Unterschied liegt darin, daß ich das Bild beim Laden von SD-Karte hole und beim Undo aus der ArrayList. Leider funktioniert das mit der ArrayList nicht, und ich weiß nicht wieso.
Hab mir jetzt temporär mal die Undo-Bilder auf die SD-Karte gespeichert, und siehe da, wenn ich sie dann Lade werden sie auch angezeigt.
Aber wieso funktioniert das mit der ArrayListe nicht? Ich leg doch die Bitmaps direkt rein. Kann mir jemand weiterhelfen?
Gruß,
Tom
ich hab mir eine kleine App gebastelt, wo ich drauf malen / schreiben kann (zwecks Unterschrift). Dafür hab ich einfach ne View genommen und erzeuge eine Bitmap und ein Canvas und male darauf.
Weiterhin hab ich eine Load- und Save-Funktion drin, um das aktuelle Bitmap zu Speichern oder zu Laden. Das klappt alles wunderbar.
Jetzt wollte ich eine Undo-Funktion einbauen, um z.B. die letzten 5 Schritte rückgängig zu machen. Sprich, die letzten 5 Bitmaps muß ich mir merken und bei einem Undo das vorletzte anzeigen.
Problem ist nun: ich hab die Bitmaps in eine ArrayList gelegt:
Code:
private ArrayList<Bitmap> listBitmaps = new ArrayList<Bitmap>();
if (listBitmaps.size() == 5) {
listBitmaps.remove(0);
}
listBitmaps.add(bitmap);
die Bilder sind auch in der Liste vorhanden. Wenn ich allerdings nun ein Bild aus der Liste nehme, und genau wie beim Laden den gleichen Code nehme, um das Undo-Bild anzuzeigen, passiert einfach NICHTS.
hier das laden:
Code:
public void loadBitmap() {
String path = Environment.getExternalStorageDirectory() + "/blabla/images/picture.png";
Bitmap bmp = BitmapFactory.decodeFile(path);
if (bmp != null) {
if (canvas != null) {
canvas.drawBitmap(bmp, 0, 0, null);
invalidate();
}
}
}
hier undo:
Code:
Bitmap bmp = listBitmaps.get(undoCounter);
if (bmp != null) {
if (canvas != null) {
canvas.drawBitmap(bmp, 0, 0, null);
invalidate();
}
}
Der einzige Unterschied liegt darin, daß ich das Bild beim Laden von SD-Karte hole und beim Undo aus der ArrayList. Leider funktioniert das mit der ArrayList nicht, und ich weiß nicht wieso.
Hab mir jetzt temporär mal die Undo-Bilder auf die SD-Karte gespeichert, und siehe da, wenn ich sie dann Lade werden sie auch angezeigt.
Aber wieso funktioniert das mit der ArrayListe nicht? Ich leg doch die Bitmaps direkt rein. Kann mir jemand weiterhelfen?
Gruß,
Tom