Das ist mehr wie eine generische Frage, aber nach vielen Suchen und Versuchen kann ich nicht verstehen, warum das so schwer zu erreichen ist. Dies ist die Antwort, die ich am nächsten finde, aber immer noch nicht umsetzen kann.
Um genau zu sein, verwende ich 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 des Grid-Layout-Manager scrollt die Ansicht in einer "ruckartigen" Art und Weise. Ich habe versucht, die Methode von oben Link aber erfolglos zu implementieren.
Ich habe auch versucht, LinearSmoothScroller zu implementieren, aber ich bin mir nicht sicher, wie man die Methode computeScrollVectorForPosition implementieren kann. Googles Dokumentation zu computeScrollVectorForPosition hat buchstäblich 0 Wörter.
Ich fand dieses dreiteilige Tutorial , aber es war sehr wenig hilfreich. Alles, was ich fragen möchte, ist: Kann es irgendeinen Template-Code geben, den wir in LinearSmoothScroller implementieren können, oder indem wir RecyclerView.SmoothScroller erweitern und ein reibungsloses Scrollen erreichen? Auch wenn der Code im Rasterlayout von der Anzahl der Elemente und Elemente pro Zeile abhängt, muss es eine einfache Methode geben. Fehle ich hier etwas?
Die typische Quelle für "ruckelndes" Scrollen in Android ist, dass die App zu viel Zeit im Hauptanwendungs-Thread benötigt, um die Benutzeroberfläche zu aktualisieren. Im Fall von RecyclerView
würde dies bedeuten, dass zu viel Zeit in onBindViewHolder()
oder möglicherweise in onCreateViewHolder()
benötigt wird. Diese müssen jeweils in Millisekunden zurückgegeben werden, was bedeutet, dass Sie keine Festplatten-E / A oder Netzwerk-E / A in ihnen ausführen können.
denke, ich habe das Problem gefunden. Ich verwende holder.photo.setImageBitmap (BitmapFactory.decodeFile (itemList.get (position) .get AbsolutePath ())); auf onBindViewHolder () und die Bilddatei ist etwa 100kb jeweils mit etwa einem Dutzend Bilder in der Liste
Ja, das wird Festplatten-I / O und Bilddecodierung im Hauptanwendungs-Thread machen. Das wird langsam genug sein, um Jank in der UI zu verursachen (d. H. "Ruckelndes" Scrollen).
Ziehen Sie eine Bildladebibliothek wie Picasso oder Universal Image Loader in Betracht, da diese Ihre ImageView
asynchron aus der Bitmap auffüllen können.
In dieser Beispielanwendung wird der Universal Image Loader verwendet, um den Inhalt von% zu füllen. co_de% (mit RecyclerView
), wobei die Datenquelle die verfügbaren Videos auf dem Gerät sind.
Fügen Sie dies hinzu, wenn Sie in Ihrer Aktivität oder in Ihrem Fragment eine Recycler-Ansicht festgelegt haben
%Vor%setNestedScrollview (false) erledigt die Arbeit für Sie.
Ich habe gerade mit diesem Problem konfrontiert, und die Deaktivierung des verschachtelten Scrolls hat es behoben. Mach es so:
%Vor%Oder Sie können den Wert in der XML-Datei ändern, in der Sie RecyclerView definiert haben:
%Vor%Tags und Links android android-recyclerview gridlayoutmanager smooth-scrolling