Ich entwickle gerade eine App und versuche derzeit ScreenSlide
hinzuzufügen. Ich habe es geschafft, dies mit einem Tutorial zu tun, aber das übliche Verschieben zwischen x
pages ist nicht ganz so was ich suche.
Mit dem unten angegebenen Code kann ich zwischen 5 Seiten gleiten, aber die Seiten sind in einer geraden Linie ausgerichtet und Sie können nicht von der ersten Seite direkt in die 5. und umgekehrt gehen. In meiner App habe ich 4 Seiten. Wenn ich nach links rutsche, wechsle ich zwischen den ersten beiden Seiten, wenn ich nach rechts rutsche, wechsle ich zwischen zwei letzten Seiten. Auf dem Bild unten können Sie sehen, wie mein aktueller Code die Seite wechselt und darunter - mein Ziel.
%Vor%[UPDATE]
Ich habe es geschafft, einen Code zu schreiben, der es mir ermöglicht, zwischen sechs verschiedenen Seiten stufenlos nach rechts zu gleiten. Die linke Seite ist jedoch begrenzt - ich kann nur auf die erste Seite gleiten (also wenn ich auf der ersten Seite bin, nachdem ich dreimal nach rechts gefahren bin, kann ich nur 3 Zyklen rückwärts machen). Ich denke, ich bin sehr nahe daran, die Lösung zu finden. Irgendwelche Ideen?
MainActivity.java
%Vor%ScreenSlidePageFragment.java
%Vor%Eine mögliche Problemumgehung ist nicht die Verwendung von viewpager, sondern die Erstellung eines eigenen benutzerdefinierten Sliders. Ich habe diese Lösung gefunden, da ViewPager sehr unflexibel ist, zum Beispiel wenn Sie versuchen, etwas wie Facebook Page app zu machen. Nachteile: Sie müssen alle Berührungen und den Lebenszyklus verwalten.
Eine andere einfachere Lösung dafür ist im Grunde die folgende API, wenn ich die Frage richtig verstehe, sollte es genug sein.
ViewPager.setCurrentItem
Das würde ich tun.
Da Sie eine endliche Menge an Bildschirmen haben, würde ich ein Array machen, um jede Instanz des ScreenSlidePageFragment
unter einem entsprechenden Index zu speichern. Sie können also eine Instanz von diesem Array abrufen, indem Sie "position" verwenden. Auf diese Weise können Sie getItem
function für etwas wie
Hinweis: Code nicht getestet
Im Grunde genommen müssen Sie die Logik schreiben, um eine vorhandene Instanz eines Fragments basierend darauf zurückzugeben, wo Sie sich gerade befinden und welche Position angefordert wird.
Sie können versuchen ViewPager.setCurrentItem
Wenn Sie zu Seite
navigieren möchten %Vor%Wenn Sie zu einer Seite ohne fließenden Bildlauf navigieren möchten
%Vor%Ich denke, es ist möglich zu tun. 1. Setzen Sie die Elementanzahl von ViewPager auf Integer.MAX_VALUE und das aktuelle Element auf Integer.MAX_VALUE / 2. Es gibt dir die Möglichkeit, eine falsche unendliche Schriftrolle zu erstellen. 2. Realisieren Sie Ihre Logik abhängig vom Fragment der aktuellen Position. Es ist einfach, wenn Sie sie in Ihrem Adapter speichern:
%Vor%Ich kann später mehr Code schreiben, wenn Sie brauchen.
Folge diesem Tutorial, das ist das beste, ich habe es in meinem AP benutzt. Android Sliding Tabs mit Material Design
Tags und Links java android android-fragments android-fragmentactivity