Подтолкнуть постраничное представление переработчика к подсказке на следующей странице без переключения
Я использую горизонтальное окно повторного просмотра с LinearLayoutManager и PagerSnapHelper, и каждый вид / страница является полноэкранным и привязывается к окну, так что только одна страница доступна для просмотра после завершения. Как и большинство полноэкранных перелистывающихся вкладок.
Вставляя новую страницу ПОСЛЕ текущей страницы, я хочу временно показать / намекнуть на ее наличие без привязки / прокрутки к ней, т. Е. Чтобы пользователь знал, что он открыл новую страницу, и он там, если он хочет просмотреть ее, не заставляя ее на самом деле просмотреть это.
Так что это будет тот же эффект, если вы начнете немного перетаскивать палец, чтобы открыть следующую страницу перед тем, как отпустить и позволить ей вернуться на начальную страницу.
Как я могу это сделать? Спасибо
2 ответа
recyclerView.smoothScrollBy(nudgeDistanceInPx, 0);
Это сгладит прокрутку, чтобы показать следующую страницу немного раньше, чем PagerSnapHelper сработает и вернет ее в исходное положение.
Я еще не сделал это с RecyclerView, но мне удалось сделать что-то подобное на ViewPager. По сути, вы могли бы использовать ValueAnimator с CycleInterpolator, чтобы прокрутить RecyclerView каждый кадр немного, а затем вернуться назад. Поскольку позиция прокрутки обновляется с каждым кадром, я думаю, что это не должно вступать в противоречие с привязкой:
val startX = recyclerView.getScrollX().toFloat()
val endX = startX + Utils.dpToPx(context, 100) // the amount you want to scroll in pixels
val animator = ValueAnimator.ofFloat(1f, 0f)
animator.cancel()
animator.interpolator = CycleInterpolator(0.5f)
animator.startDelay = 600
animator.duration = 600
animator.addUpdateListener { animation ->
val alpha = animation.animatedValue as Float
recyclerView.scrollTo((startX * alpha + (1f - alpha) * endX).toInt(), 0)
}
animator.start()
Это работает на ViewPager и должно быть точно так же на RecyclerView, так как он имеет те же доступные методы прокрутки...