Beiträge von dyingangel666

    Kann ich noch nicht sagen, ich halte gerade Rücksprache mit meinem Prof wieviel SWS dafür nach Plan vorgesehen sind. Natürlich haben wir noch andere Vorlesungen und Projekte und können nicht unsere gesamte Zeit für das Studienprojekt investieren. Ob Game oder was anderes ist uns prinzipiell völlig egal, solange es gut umzusetzen und interessant ist. Mir ging es ja prinzipiell um ein paar kreative Vorschläge was man evtl. machen könnte :)

    Hi Leute,


    wir haben dieses Semester im Studiengang Medieninformatik ein kleines Softwareprojekt im Team als Projektarbeit. Es wurden einige Projekte von Profs vorgeschlagen, jedoch sind die Projekte die unserem Team zusagen schon vergeben. Laut Prof können wir aber auch selber Ideen vorschlagen, nur hörts da leider mit der Kreativität auf, da wir die Komplexität schwer einschätzen können. Im letzten Semester konnten wir unsere ersten Erfahrungen in Android sammeln, was uns auch allen recht leicht viel, dank guter Vorkenntnisse in Java. Da kamen dann von einem Team z.B eine kleine Zeichenapp zustande, in der man auf einem Canvas zeichnen konnte, via Colorpicker die Brushfarbe wählen konnte, oder in einem anderen Dialog die Brushgröße und Transparenz einstellen konnte, Stempel zeichnen konnte, oder via Multitouch Formen, wie Rechtecke und Kreise setzen konnte. Das andere Team hatte ein kleines Klickgame gemacht, wo verschiedene Objekte über das Display flogen die man mit dem Finger antippen konnte und dann explodierten und man Punkte bekam.


    Soviel also zu unseren Erfahrungen in Android. Unser Team besteht aus 4 Leuten und wir suchen eine Idee für eine App die in einem Semester mit 4 Leuten gut zu lösen ist. Habt ihr vielleicht Tips oder Ratschläge was man da machen könnte?


    Gruß Alex

    Problem gelöst! Habe es jetzt über eine LinkedList vom Typ Object gelöst und packe dort alle gezeichneten Objekte rein. Jedes Objekt hat eine eigene Id. Beim zeichnen eines Objekts bekommt jedes Objekt eine Id, die der objectIdList angefügt wird (hinten). Beim zeichnen des Canvas wird einfach die Liste durchlaufen und jedes Objekt ausgegeben und mit der Reihenfolge der objectIdList verglichen. Die wird eigentlich nur benötigt weil man bei mir im Vordergrund und im Hintergrund zeichnen kann. Wenn man im Vordergrund zeichnet wird das Objekt am Ende der objectList angefügt und für den Hintergrund am Anfang der Liste. Um jetzt aber noch die Reihenfolge zu merken in der die Objekte eigentlich gezeichnet wurden hab ich die objectIdList eingeführt, janz einfach :)


    Java
    private LinkedList<Object> objectList = new LinkedList<Object>();
    	private LinkedList<Integer> objectIdList = new LinkedList<Integer>();


    Kann geschlossen werden!

    Hi,


    das eine Problem mit dem Drawingcache gelöst, steh ich auch schon vor dem nächsten :-/ Ich zeichne in meiner App auf einen Canvas. Man kann normal Zeichnen mit verschiedenen Brushes, man kann aber auch Kreis- und Rechtecke via Multitouch auf den Canvas legen. Das funzt auch prima. Jetzt hab ich allerdings ein Problem mit der Reihenfolge wie der Canvas gezeichnet wird. Wenn man ein neues Kreis- oder Rechteckobjekt gezeichnet hat und dann normal mit den Brushes weiterzeichnen will sollen diese natürlich über den alten Objekten im Canvas gezeichnet werden und nicht dahinter...


    Ich dachte ich bin schlau und führe für jedes Objekt (FreeHand, Circle o. Square) eine layerId und speichere dieser nacheinander in einer Liste, um die Reihenfolge der gezeichneten Objekte zu speichern. Diese wollte ich dann beim zeichnen des Canvas prüfen, so dass er weiss welches Objekt wohin gehört... nur leider krieg ichs nicht hin :( Habt ihr ne Idee wie ich das entweder mit den layerId's hinbekomme oder vielleicht auch ganz anders... eleganter?


    die Objektklassen:


    onDraw():

    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!

    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 :(

    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.


    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


    Hat sich mittlerweile erledigt, habs hinbekommen.


    In der DrawView in onDraw:

    Java
    public void onDraw(Canvas canvas)
    	{		    			
    		//Lädt das Bild aus dem Galleryintent (Menu->Load) als BG in den Canvas
    		if(imageLoaded) {
    			Rect imageBounds = canvas.getClipBounds();  
    	
    	    	loadedImage.setBounds(canvas.getClipBounds());
    	    	loadedImage.draw(canvas);
    		}
    }


    Und in der Activity in onActivityResult:

    Java
    Drawable drawable = new BitmapDrawable(BitmapFactory.decodeFile(picturePath));
    	    	drawView.setImageToBackground(drawable);


    Kann geschlossen werden!

    Hi Leute,


    hab ein kleines Problem mit meinem Abschlussprojekt, eine kleine Malapp mit der man auf einem Canvas zeichnen kann. Dafür gibts verschiede Funktionen, wie Colorpicker, ne Seekbar für die Pinselgröße, speichern etc... Die App läuft soweit, vorallem mit guter Performance. Jetzt hätt ich allerdings noch gerne eine Funktion drin, die ich einfach nicht hinbekomme. Ich würde gerne ein Bild aus der Gallery laden und irgendwie als Hintergrund in den Canvas reinsetzen, sodass man quasi auf dem Bild malt. Beim speichern soll das Bild natürlich im Bitmap das erstellt wird enthalten sein. Wie krieg ich das am besten gelöst? Hier mal bissel Code (Die teilweise geilen Kommentar bitte ignorieren, sind nur zum Nachvollziehen des Codes für meine beiden Studienkollegen) :)


    Die Klasse DrawView:


    Und noch die Activity:


    Hat jemand Rat für mich? Momentan passiert jedenfalls nichts. Wenn die App abstürzen würde, wüsst ich wenigstens dass was falsch ist :D Aber so passiert einfach garnichts :(