2012-05-18 13 views
11

Ich möchte lernen, wie ich Ebenen (wie in Photoshop) in meiner Android-Anwendung erstellen kann. Ich möchte eine grundlegende Sache erreichen: Wenn ich ein Bild in meine Leinwand einfüge, die zum Beispiel eine Figur sein soll, möchte ich in der Lage sein, die Leinwand zu malen, aber das Bild darf die Linien der Figur nicht beeinflussen. Und dann muss ich dieses Bild auf meiner SD-Karte speichern.Android Ebenen in Leinwand erstellen

Irgendwelche Vorschläge/Ratschläge/Beispiele? Was kann ich dafür verwenden?

+0

Haben Sie sich drehen in 'PorterDuff.Mode'? Ich gehe davon aus, dass Ihre Ebenen statisch sind und einmal gezeichnet nicht entfernt oder verschoben werden können. Ist das korrekt oder möchten Sie Ebenen genau wie Photoshop? – techiServices

+0

Ja, ich möchte etwas ähnliches wie Ebenen in Photoshop erstellen. –

+0

Sie können also hinzugefügt, entfernt und verschoben werden? – techiServices

Antwort

1

Die Reihenfolge, wie Sie malen, macht Schichten. Erstellen Sie einen Stapel von Objekten, was Sie malen, und ändern Sie dann einzelne Objekte (malen in der Ebene) oder verschieben Sie sie in diesem Stapel (Ebenen wechseln). Verwenden Sie die gleiche Reihenfolge, um Ihr Bild zum Speichern zu erstellen.

0

Werfen Sie einen Blick auf die verschiedenen Xfermode s, die Sie auf eine Paint anwenden können. PorterDuff.Mode bietet einige Optionen wie Sie in Photoshop erhalten, wie z. B. Bildschirm und Multiplizieren, Aufhellen und Abdunkeln. Die AvoidXferMode kann jedoch Ihren Bedürfnissen mehr entsprechen.

0

Sie können Ihre Ebenen in einem FrameLayout zusammenstellen. Möglicherweise müssen Sie einige Tricks anwenden, um sicherzustellen, dass Berührungsereignisse an die richtige Ebene weitergegeben werden.

Sobald Sie Android Ihre Ansichten wie Sie möchten komponieren, können Sie mFrameLayout.onDraw (Canvas c), um die gesamte Sache auf eine Leinwand zu zeichnen.

Dieser Artikel hat einige Informationen, wie Sie Ihre Viewgroup in eine jpeg Image on canvas to JPEG file