1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Tom299, 23.12.2011 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    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:
    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
     
  2. Tom299, 23.12.2011 #2
    Tom299

    Tom299 Threadstarter Android-Experte

    oh man, nach mehrstündigem suchen und googlen hab ich es doch noch rausgefunden:

    Code:
    listBitmaps.add(bitmap.copy(Config.RGB_565, true));
    
    man muß eine kopie der bitmap erzeugen und das true gibt an, daß es mutable ist. darauf muß man auch erst mal kommen ...


    na dann frohe weihnachten :thumbsup:
     
    DieGoldeneMitte gefällt das.
  3. DieGoldeneMitte, 23.12.2011 #3
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Ich hatte zwar schon den Verdacht, dass es etwas mit den darunter liegenden DS zu tun haben könnte. Aber da wäre ich nie drauf gekommen.

    Frohes Fest!
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Wandernder Text Android App Entwicklung 17.10.2017
[OFFEN] Lists-in-List-Problem Android App Entwicklung 12.10.2017
[ERLEDIGT] Bitmap von Activity an Activity übergben Android App Entwicklung 03.09.2017
[OFFEN] Bitmap.recycle funktioniert nach drawBitmap nicht Android App Entwicklung 18.07.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[OFFEN] git-Problem in Android Studio (Windows) Android App Entwicklung 24.05.2017
[ERLEDIGT] put in HashMap bringt App zum abstürzen Android App Entwicklung 22.05.2017
[ERLEDIGT] Problem mit Async Task und auszuführender Aufgabe Android App Entwicklung 02.05.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Excel Dokument mithilfe von JExcelAPI auslesen funktioniert nicht :/ Android App Entwicklung 02.03.2017
Du betrachtest das Thema "Bitmap Problem" im Forum "Android App Entwicklung",