Подтолкнуть постраничное представление переработчика к подсказке на следующей странице без переключения - PullRequest
1 голос
/ 13 июня 2019

Я использую горизонтальное окно повторного просмотра с LinearLayoutManager и PagerSnapHelper, и каждый держатель / страница является полноэкранным и привязывается к окну, так что только одна страница доступна для просмотра после завершения. Как и большинство полноэкранных перелистывающихся вкладок.

При вставке новой страницы ПОСЛЕ текущей страницы я хочу временно показать / намекнуть на ее наличие без привязки / прокрутки к ней, т. Е. Чтобы пользователь знал, что он открыл новую страницу, и он там, если он хочет просмотреть ее без форсирования их на самом деле просмотреть его.

Так что это будет тот же эффект, если вы начнете немного перетаскивать палец, чтобы открыть следующую страницу перед выпуском и позволить ей вернуться на начальную страницу.

Как я могу это сделать? Спасибо

Ответы [ 2 ]

1 голос
/ 14 июня 2019
recyclerView.smoothScrollBy(nudgeDistanceInPx, 0);

Это сгладит прокрутку, чтобы показать следующую страницу немного раньше, чем включится PagerSnapHelper и вернет ее в исходное положение

1 голос
/ 13 июня 2019

Я еще не сделал этого с 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, так как он имеет те же доступные методы прокрутки ...

...