2010-06-10 13 views
58
  1. Gibt es eine einfache Möglichkeit, die Curl-Seite spiegeln Animation zu tun? Eine Curl-Animation ist eine Animation von Seiten, die sich spiegeln, einschließlich der darüber rollenden Seite und der Schatten auf der unteren Seite.
  2. Was ist der empfohlene Weg, um eine "Galerie" zu erstellen, die zwei Seiten gleichzeitig anzeigt (genau wie ein Buch)?Android-Seite Curl-Animation

    Ist es:

    1. Letting der Adapter zu einer Zeit ein lineares Layout von zwei Bildern angezeigt werden? (Es lässt mich nicht wie ein Buch eine Seite über die andere spiegeln)
    2. Verwenden Sie zwei Seiten, platzieren Sie sie irgendwie nebeneinander, und wenn es Zeit ist zu animieren - bewegen Sie die nächsten beiden Seiten um? Was ist der bessere Weg, um die linke Seite auf der rechten Seite umzublättern?
+0

möglich Duplikat [Implementieren Einrollen auf Android?] (Http: // Stackoverflow.com/questions/3912849/implementieren-page-curl-on-android) – derobert

Antwort

23

Ich implementiere einen 2D-Seitencurl im nativen Canvas. Überprüfen Sie meine Antwort in: Implement page curl on android?

EDIT: Der Code Projekt meiner Implementierung: http://code.google.com/p/android-page-curl/ EDIT2: Verbindungen

aktualisiert
+0

Zuerst danke für die Links zu einem 3đ Versuch. Switcher ist nett, aber es implementiert nicht, was sie in Apple getan haben. Sie sollten es in iBooks sehen, um es zu verstehen. – Meymann

+0

@Meymann es ist kein Flipper (nannte das Projekt ein bisschen schlecht ...) es ist ein Seitencurl-Effekt. Das Projektlogo ist nur ein Screenshot von der App selbst. Versuch es. – Moss

+0

Wissen Sie was? Ich nehme es zurück. Nun, es ist immer noch nicht die Curl wie Apple es präsentiert, aber es ist sehr beeindruckend und ja, wenn der Preis für Apple wie Curl ist Kompatibilität und viel Zeit, würde ich lieber die Anforderungen ändern, um Ihren Code zu verwenden. – Meymann

2

Ich habe nicht vor auf dem Android gearbeitet, aber es scheint mir den besten Weg, um eine Seite Flipping Art der Anzeige zu tun, wäre es in drei Schichten zu ziehen. Der erste ist der Text der ersten Seite, der zweite die darunter liegende "Seite" und der dritte die nächste Seite. Wenn Sie sie von hinten nach vorne zeichnen, wird der Benutzer nur den Text auf der ersten Seite sehen.

Nun, sobald Sie das haben, sollten Sie eine Art Curling/Flipping-Animation basierend auf den von Ihnen verwendeten Steuerelementen durchführen. Wählen Sie einfach die für Sie am besten geeignete Methode aus, um diese Animation auszuführen, aber während Sie das tun, sollten Sie den Teil der Seite, der nicht mehr da ist, ausfiltern. Dadurch können Sie den Text der darunter liegenden Seite sehen (Okay, ich habe gelogen. Sie brauchen auch einen Hintergrund hinter diesem Text).

Das Problem an diesem Punkt ist, dass Sie den Text immer noch zweimal über den gleichen Platz zeichnen, daher sollten Sie den Text der ersten Seite mit der darunter liegenden Animation mischen. Auf diese Weise ist der Text, der über den Alpha-Abschnitten liegt, unsichtbar. Es wird sich nicht mit der Animation verbiegen, so dass dies immer noch ein Problem sein kann, aber abhängig von der Geschwindigkeit der Drehung, die noch in Ordnung sein könnte. Wenn die Animation fertig ist, setze einfach die erste Seite = die zweite, die Animation wird auf ein einfaches Weiß zurückgesetzt und die zweite Seite = die neue zweite Seite.

Der Schatteneffekt kann einfach dadurch erreicht werden, dass hinter der Seitenwechsler-Animation etwas Schwarz teilweise ausgeschnitten wird. Zeichne über die zweite Seite (wie es die Animationsebene bereits macht) und voila!

Ich glaube, Ihre zwei Seite Frage könnte eine sehr ähnliche Methode verwenden. Viel Glück

+0

Danke, aber ich denke, es gibt ein paar Dinge, die Sie möglicherweise nicht über Android und das Problem verstanden haben: A. Die CURL bedeutet Rollen einer Seite. Das Verschieben von Seiten übereinander erfordert 2 Seiten in Android und eine einfache Animation. Die CURL beinhaltet ein mathematisches Modell mit Verdrehung, 3D und Schattierung. B. In Android sollten Sie die Animationen jeweils in einem anderen Pfad und in einer anderen Beschleunigung interpolieren, so dass der Schatten und die Seiten synchronisiert werden. Das ist fast unmöglich. Selbst wenn Sie Erfolg haben, wäre die Leistung peinlich. Dank M. – Meymann

+0

Meymann: Ich denke, Sie widersprochen nur Ihre Frage und nannte die Aufgabe eine Seitenumdrehung unmöglich zu machen. Lunin hat recht, aber der beste Weg, um einen Seitenumbruch zu erreichen, ist eine strikte 2D-Animation (die auf den meisten Android-Geräteprozessoren relativ einfach durchgeführt werden kann) auf einer Canvas-Steuerung. Dies kann mit einem Timer animiert werden. Es könnte zwar mit OpenGL gemacht werden, aber fast die Hälfte der Android-Geräte läuft entweder ohne Hardwarebeschleunigung oder auf unterdurchschnittlichen GPUs. 3D ist eine schlechte Wahl der Implementierung. Eine einfache 2D-Version (mit einigen Farbverlaufsschatten, natürlich) würde der Rechnung entsprechen. – mattbasta

+0

Noch einmal: "Curl" ist die Handlung des Umblätterns von Seiten. Spiegeln mit einem Schatteneffekt, wobei die Spitze der Seite (mit Transparenz, Schatten *** UND 3D ***) über die untere Seite gerollt wird. CURL in iPhone OS ist eine Frucht eines Monats Forschung und mathematische Modelle. Mit Android können Sie eine Seite auf eine andere Seite verschieben. Schattierung bedeutet eine andere perfekt synchronisierte Ebene (ein anderes Problem), und es gibt keine Möglichkeit, eine Ansicht mit nur 2D-Grafiken zu rollen. – Meymann

6

Ich bin mit diesem Code. Es ist wirklich wirklich perfekt für jemanden zu verstehen und zu verwenden. Vielen Dank an Harism

GitHub Link for Page Curl Animation in android With OpenGL

+0

Hey hi, ich benutze auch den Code von harism, bin aber in ein Problem geraten, wenn ich versuche, zu den vorherigen Seiten zurückzukehren, bleibt der Index nicht korrekt und Bitmaps werden nicht mit den richtigen Indizes aktualisiert. http://stackoverflow.com/q/16772734/1503130, das ist ein Thread, den ich erstellt habe, bitte helfen Sie mit einem Vorschlag oder einer Idee. – Prateek