stop-scrollView in der Mitte des scroll
Ich habe eine scrollview mit einer Menge von Inhalten. Nun, wenn Benutzer einen Seitensprung oder scrollen Sie nach unten, ich will den scrollview, um ein anhalten bei einer bestimmten anzeigen Standort, wo mache ich einige Animationen, und dann können Benutzer wieder Seitensprung oder scrollen Sie nach unten.
Ich habe versucht, das deaktivieren der scrollview wie bereits erwähnt hier aber Es wird nur deaktiviert, wenn der scrollview komplett beendet und kann nicht aufhören, in der Mitte von einem Seitensprung.
Gibt es eine Möglichkeit, ich kann aufhören, ein Seitensprung der scrollview, wenn eine bestimmte Ansicht Standort oder einen bestimmten y-Wert erreicht ist?
- haben Sie versucht, lazy loading
- Eine solche Anwendung Verhalten wird wahrscheinlich brechen die user experience, sind Sie sicher, dass Sie wollen, um es zu implementieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem, meine Lösung war.
Damit stoppen Sie den Bildlauf.
Stoppen einen Seitensprung an einem bestimmten Punkt einfach anrufen
Wenn Sie nur besorgt über Affären, dies ist der logische Weg, dies zu tun meiner Meinung nach, weil
velosityY
auf 0 gesetzt ist und damit der Seitensprung wird sofort gestoppt.Hier ist die javadoc der Seitensprung-Methode:
Ein Ansatz sein kann, um zu verwenden smoothScrollToPosition, Stoppt vorhandene scrolling-Bewegung. Hinweis: diese Methode erfordert API-Ebene >= 8 (Android 2.2, Froyo).
Beachten Sie, dass, wenn die aktuelle position ist weit entfernt von der gewünschten position, dann ist die smooth-scrolling wird sehr lange dauern und sehen ein bisschen ruckelt (zumindest in meinen Tests auf Android 4.4 KitKat). Ich habe auch festgestellt, dass eine Kombination von Aufruf setSelection und smoothScrollToPosition könnte manchmal bewirkt, dass die position "miss" etwas, dies scheint nur geschehen, wenn die aktuelle position war sehr nah an die gewünschte position.
In meinem Fall, ich wollte meine Liste zu springen, um die top (position=0), wenn der Benutzer eine Taste gedrückt (dies ist etwas anders als in Ihrem Fall verwenden, so müssen Sie diese anpassen, um Ihre Bedürfnisse).
Ich verwendet die folgende Methode, um
In meiner action-handler für die Schaltfläche, dann rief ich diese wie folgt
Oben nicht direkt Ihre Frage zu beantworten, aber wenn Sie erkennen können, wenn die aktuelle position an oder nahe Ihrer gewünschten position, dann vielleicht könnten Sie smoothScrollToPosition um das Blättern zu beenden.
Müssen Sie deaktivieren
ScrollView
Umgang mit dem Seitensprung-Betrieb. Um dies zu tun einfach überschreibenfling
Methode inScrollView
- und Kommentar -super.fling()
. Lassen Sie mich wissen, wenn das funktioniert !Ich versuche zu erreichen, eine ähnliche situation. Ich habe eine teilweise Lösung:
Habe ich es geschafft, zu stoppen das ScrollView auf eine bestimmte y-Koordinate durch überschreiben
onScrollChanged
und dann ruftsmoothScrollTo
. Ich dem Benutzer erlauben, weiter nach unten scrollen, über diesen Punkt, indem Sie einen boolean, der angibt ob dies der erste Seitensprung/ziehen oder nicht. Und das gleiche gilt für das scrollen von unten nach oben - ich halt das scrollen an der gleichen Stelle wieder. Und dann erlauben den Benutzer, um weiter scrollen wieder nach oben.Den code wie folgt aussieht:
Gut im Moment mit dieser Methode: