Wie kann man RecyclerView reibungslos machen?

Dies ist eher wie eine generische Frage, aber nach viel Suche und versuchen, ich bin nicht in der Lage zu verstehen, warum dies so schwer zu erreichen ist. Dies ist die engste Antwort, die ich finden kann, aber immer noch nicht in der Lage zu implementieren.

Ich bin mit RecyclerView mit GridLayoutManager. Alles, was ich will, ist das Raster-Layout, um reibungslos zu scrollen (wie Standard-Gallary-App), nichts Besonderes, aber die Standard-Implementierung von Raster Layout-Manager scrollt die Ansicht in einer 'ruckartigen' Weise. Ich habe versucht, die Methode von oben Link aber erfolglos zu implementieren.

Ich habe auch versucht, LinearSmoothScroller zu implementieren, aber ich bin nicht sicher, wie man computeScrollVectorForPosition Methode implementiert. Die Google-Dokumentation zu computeScrollVectorForPosition hat buchstäblich 0 Wörter.

Ich fand dieses 3-teilige Tutorial , aber es war von sehr wenig Hilfe. Also, alles was ich fragen möchte ist: Kann es irgendeine Art von Vorlagencode geben, den wir in LinearSmoothScroller implementieren können oder indem wir RecyclerView.SmoothScroller erweitern und ein glattes Scrollen erreichen? Auch wenn der Code von der Anzahl der Items und Items pro Zeile in gridlayout abhängt, muss es eine Methode geben, um es einfach zu machen. Bin ich hier etwas fehlt

  • RecyclerView - Offscreen-Artikel überspringen ersten Layout-Pass
  • Parallaxeffekt auf jeden Gegenstand in einer Recycler-Ansicht?
  • Wie bekomme ich einen Kontext in einem Recycler-View-Adapter
  • Android-Centering-Artikel in RecyclerView
  • Entfernen Sie den Abstand zwischen den Elementen in RecyclerView android
  • Position der Ansicht in onCreateViewHolder
  • So bleiben Sie an einer Scroll-Position in RecyclerView nach dem Hinzufügen von Elementen an seinem ersten Index und rufen Sie notifydatasetchange
  • Vorschau auf horizontale recyclerview in android studio
  • 4 Solutions collect form web for “Wie kann man RecyclerView reibungslos machen?”

    Die typische Quelle des "ruckartigen" Scrollens in Android ist die App, die zu viel Zeit auf dem Hauptanwendungs-Thread hat, der die Benutzeroberfläche aktualisiert. Im Falle von RecyclerView würde dies bedeuten, dass zu viel Zeit in onBindViewHolder() oder möglicherweise in onCreateViewHolder() . Diejenigen, die jeweils in Unter-Millisekunden-Zeiten zurückkehren müssen, was bedeutet, dass Sie keine Disk I / O oder Netzwerk-I / O in ihnen tun können.

    Denke ich fand das problem Ich benutze holder.photo.setImageBitmap (BitmapFactory.decodeFile (itemList.get (position) .get AbsolutePath ())); On onBindViewHolder () und die Bilddatei ist etwa 100kb jeweils mit etwa einem Dutzend Bilder in der Liste

    Ja, das wird die Festplatten-E / A und die Bilddekodierung auf dem Hauptanwendungs-Thread machen. Das wird langsam genug sein, um jank in der Benutzeroberfläche zu verursachen (dh "ruckartiges" Scrollen).

    Verwenden Sie eine ImageView wie Picasso oder Universal Image Loader, da sie Ihre ImageView asynchron aus der Bitmap ImageView können.

    Diese Beispiel-App verwendet Universal Image Loader, um den Inhalt eines RecyclerView (mit GridLayoutManager ) zu GridLayoutManager , wobei die Datenquelle die verfügbaren Videos auf dem Gerät ist.

    Füge dies hinzu, wo immer du recyclerview in deiner Aktivität oder deinem Fragment erklärt hast

     RecyclerView mRecyclerview = (RecyclerView) findViewById(...); mRecyclerview.setNestedScrollingEnabled(false); 

    SetNestedScrollview (false) macht die Arbeit für Sie.

     android:animateLayoutChanges="false" 

    Füge einfach hinzu

     animateLayoutChanges = true 

    In recyclerview xml

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