To jest bardziej ogólne pytanie, ale po wielu poszukiwaniach i próbie nie jestem w stanie zrozumieć, dlaczego tak trudno jest to osiągnąć. This to najbliższa odpowiedź, którą mogę znaleźć, ale wciąż nie mogę jej wdrożyć.Jak sprawić, by RecyclerView przewijał się płynnie?
Aby być konkretnym używam RecyclerView z GridLayoutManager. Wszystko czego chcę, to układ siatki do płynnego przewijania (jak domyślna aplikacja galwaniczna), nic nadzwyczajnego, ale domyślna implementacja menedżera układu siatki przewija widok w sposób "zgryźliwy". Próbowałem zaimplementować metodę z powyższego linku, ale bezskutecznie.
Próbowałem również wdrożyć LinearSmoothScroller, ale nie jestem pewien, jak wdrożyć metodę computeScrollVectorForPosition. Google's documentation na computeScrollVectorForPosition dosłownie ma 0 słów.
Znalazłem this 3 part tutorial, ale było to bardzo mało pomocne. Pytam tylko: czy istnieje jakiś szablon kodu, który możemy zastosować w LinearSmoothScroller lub rozszerzając RecyclerView.SmoothScroller i uzyskując płynne przewijanie? Nawet jeśli kod zależy od liczby przedmiotów i przedmiotów w wierszu w gridlayout, musi być jakaś metoda, aby to zrobić łatwo. Czy coś mi umyka ?
- może powinieneś określić, dlaczego twój istniejący kod jest "szarpany", używając narzędzi takich jak Traceview, 'StrictMode' i tak dalej. – CommonsWare
@commonsWare Więc masz na myśli domyślną implementację GridLayoutManager powinna płynnie przewijać gridview? Przykro mi, jeśli zabrzmię noob, jestem całkiem nowy w Android Programming. – rockfight
"Czyli domyślna implementacja GridLayoutManager powinna płynnie przewijać gridview?" - tak, przynajmniej dla mojej definicji "sprawnie". Typowym źródłem "szarpanego" przewijania w Androidzie jest zbyt długa aplikacja na głównym wątku aplikacji aktualizującym interfejs użytkownika. W przypadku 'RecyclerView', oznaczałoby to zajęcie zbyt dużej ilości czasu w' onBindViewHolder() 'lub ewentualnie w' onCreateViewHolder() '. Każdy z nich musi powrócić w czasie poniżej milisekund, co oznacza, że nie można w nim wykonać operacji we/wy dysku lub sieciowych operacji we/wy. – CommonsWare