Как выполнить упрощенную прокрутку с помощью RecyclerView - PullRequest
0 голосов
/ 10 июля 2020

У меня есть настройка RecyclerView с горизонтальной LinearLayoutManager, которая отображает просмотры во весь размер страницы (то есть, как ViewPager).

Я хотел бы добиться программной плавной прокрутки на определенную позицию. Однако не с линейной прокруткой, как smoothScrollToPosition(int), а с эффектом легкости входа / выхода.

Я посмотрел на RecyclerView.SmoothScroller, но из того, что я мог сказать, нет способа реализовать это поведение, потому что информация об общем расстоянии / продолжительности прокрутки, похоже, отсутствует.

Следующее, что я попробовал, - это использовать scrollTo(int, int) вручную, что, похоже, не поддерживается в RecyclerView.

На данный момент я прибег к отправке MotionEvents, чтобы имитировать перетаскивание в представлении ресайклера. Но это кажется излишним для того, что должно быть простой проблемой.

Есть ли другой способ достичь моей цели?

1 Ответ

1 голос
/ 10 июля 2020

Вы можете попробовать создать собственный RecyclerView и переопределить метод smoothScrollBy:

public class CustomInterpolatorRecyclerView extends RecyclerView {

@Override
public void smoothScrollBy(int dx, int dy) {
    super.smoothScrollBy(dx, dy, new AccelerateDecelerateInterpolator()); //pass your more advanced ease-in/ease-out interpolator here
}
...