Glattes Scrollen in Android

Es gibt eine App auf dem Marktplatz namens Floating Bilder. Diese App hat eine der glattesten Scrolling-Logik. Grundsätzlich hat die App eine leere Leinwand für den ganzen Bildschirm und dann gibt es einige Bilder auf der leere Leinwand angezeigt. Benutzer kann wischen und die App bewegt das Bild in Richtung des Swipe. Außerdem macht es auch kinetisches Scrollen. Plus gibt es keine Scrollbars so scheint es, wie der Entwickler hat eine benutzerdefinierte Ansicht implementiert alle glatte Scrolling-Logik erstellt.

Es wäre ehrfürchtig, wenn ich die Quelle davon bekommen könnte .. aber jeder hat einen Pseudocode oder Logik auf, wie man diese Art von Feature implementiert. Jeder führt, Website Links wäre hilfreich.

  • XML-Parser für dynamisches Layout (dynamisch geladene Skins)
  • Ballon-Chat-Anwendung Fragen
  • Firebase: Wenn onDisconnect Event Feuer?
  • Ist Android-Entwicklung in C / C ++ schneller als Java?
  • Android: Gibt es ein Idiom für Iterating durch ein SparseArray
  • Wie liest man HTTP-Antwort durch Sockets?
  • Deaktivieren der Schaltfläche der Tastatur, wenn noch nichts eingegeben wurde
  • Konvertiere einen gcc-Befehl an CMake für android ndk
  • Gibt es eine Möglichkeit, das Layout und die Ansichten der aktuellen Aktivität über adb zu erhalten?
  • Wie korrigiere ich in der Aktionsleiste?
  • Gegenstände von recyclerview verwirrt
  • Dynamisch die Höhe der Gruppenköpfe in einem ExpandableListView anpassen
  • 2 Solutions collect form web for “Glattes Scrollen in Android”

    Ich habe keine Erfahrung mit OpenGL noch Beschleunigungsmesser, aber Swipe (genannt Fling in Android API) ist nicht schwer zu erreichen. Das erste, was Sie brauchen, wenn Sie eine solche benutzerdefinierte View , implementiert eine GestureDetector und rufen Sie ihre onTouchEvent() in Ihrer Ansicht onTouchEvent()

     GestureDetector mGD = new GestureDetector(getContext(), new SimpleOnGestureListener() { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // beware, it can scroll to infinity scrollBy((int)distanceX, (int)distanceY); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vY) { mScroller.fling(getScrollX(), getScrollY(), -(int)vX, -(int)vY, 0, (int)mMaxScrollX, 0, (int)mMaxScrollY); invalidate(); // don't remember if it's needed return true; } @Override public boolean onDown(MotionEvent e) { if(!mScroller.isFinished() ) { // is flinging mScroller.forceFinished(true); // to stop flinging on touch } return true; // else won't work } }); @Override public boolean onTouchEvent(MotionEvent event) { return mGD.onTouchEvent(event); } 

    Während OnGestureListener.onScroll() direkt View.scrollBy() , für die onFling() Methode benötigen Sie einen Scroller .

    Scroller ist ein einfaches Objekt, das, wie Referenz sagt, das Scrollen kapselt. Es kann für kontinuierliches Scrollen verwendet werden oder auf Flügel reagieren. Scroller.fling () beginnt eine "Simulation" von Fling Scroll in sich selbst, und durch das Anschauen können Sie seine Glätte mit einer kontinuierlichen redrawing Animation kopieren:

     @Override protected void onDraw(Canvas canvas) { // ....your drawings.... // scrollTo invalidates, so until animation won't finish it will be called // (used after a Scroller.fling() ) if(mScroller.computeScrollOffset()) { scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); } } 

    Das heißt, bis die Animation läuft, berechnen Sie den Punkt, den wir erreicht haben und dort scrollen.

    Als letzte Anmerkung: OnGestureListener.onDown() Sie daran, in Ihrem OnGestureListener.onDown() true OnGestureListener.onDown() , auch wenn Sie nichts auf Down machen wollen, oder es wird nicht funktionieren.

    Und sei vorsichtig, denn Scroller in Android 2.2 hat einen Bug, für den die Fling-Animation nicht wirklich enden wird, auch wenn sie die Grenzen erreicht hat, die du als Argumente bestanden hast (noch berechneter Offset respektiert sie, also wird es sich nicht bewegen).

    Die Floating Images App ist ein Open Source Projekt. http://code.google.com/p/floatingimage/

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.