Drawingcache aktualisiert nach erstem speichern nicht

  • Hi Leute,


    hab en Problem beim Speichern eines Bildes. Ich zeichne in der View auf einem Canvas. Beim speichern wird der Drawingcache zurückgegeben. Wenn ich also was in den Canvas gemalt habe und speichere funzt alles einwandfrei beim Speichern. Wenn ich nach dem speichern aber noch was im Canvas dazumale und nochmal speichern will gibt er mir nur das Bild von vorher aus, ohne die letzten Änderungen... woran kann das liegen? -> siehe Zeile 10-11


  • Hoi,


    was liefert dir denn dein file.delete? Vll. hat das delete nicht geklappt, überschreiben auch nicht, also nimmt er das Alte ...
    Das out.close() gehört eigentlich in ein finally. Da wo es jetzt steht macht es keinen Sinn. Vll. Kann er nicht löschen oder überschreiben, weil was schief geht und der OutputStream noch offen ist ...


    hast du eigentlich den DrawingCache aktiviert? In der API steht tut man das nicht, erzeugt er den Cache beim Aufruf von getDrawingCache erst ... vielleicht ist er dann beim 2. mal invalid und du musst mit einem buildDrawingCache(true) erzwingen, dass er ihn neu aufbaut.


    Zitat


    If you call buildDrawingCache() manually without calling setDrawingCacheEnabled(true), you should cleanup the cache by calling destroyDrawingCache() afterwards.


    Vielleicht trifft da bei dir eine etwas seltsame Kombination zusammen ^^



    Gruß,
    matze

  • Glaube nicht dass es daran liegt, da es eher unwahrscheinlich ist, da das Zeitformat mit Sekunden ja im Dateinamen ist und es sowieso nicht doppelt vorkommen kann. Die Prüfung ist noch von vorher drin, da hatte ich den Dateinamen mit einem Generator generiert, bei dem hätte das noch vorkommen können. Er speichert ja auch immer mehrere Bilder ab, nur sehen die halt alle aus wie das erste das gespeichert wurde :-/


    Drawingcache ist natürlich in der View aktiviert, allerdings mach ich das im Konstruktor.


  • Seltsam, genau den Gedanken hatte ich auch, allerdings hab ichs in der DrawView Klasse direkt probiert. Bei mir brachte es nur einen weissen Bildschirm.


    Mit deiner Variante, passiert nichts. Speichert zwar das Bild beim ersten mal korrekt. Aber beim erneuten speichern, ist wieder dasselbe Bild wie vorher auch, ohne neue Änderungen :(

  • Ok, ich hab die Lösung gefunden... mal wieder sau dämlich... aber naja :D


    Nachdem der Outputstream im Tryblock geschlossen wird einfach noch die Zeile "drawView.destroyDrawingCache();" rein. Dann stellt man sicher dass er auch vor jedem Speicher den aktuellen Drawingcache nutzt :)


    Trotzdem danke für die Hilfe. Kann geschlossen werden!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!