ViewPager2 Stack PageTransform - PullRequest
       10

ViewPager2 Stack PageTransform

0 голосов
/ 10 апреля 2020

Мне нужна помощь с PageTransformer для ViewPager2 .

У меня есть 3 страницы в моем ViewPager2 . Каждая страница должна перекрываться следующей. Кроме того, все страницы должны быть прочно посередине и сдвигаться только в сторону.



Пример:
Страница 1: синий цвет
Страница 2: фиолетовый цвет
Страница 3: зеленый цвет

Страница 1 перекрывается страницей 2, а страница 2 перекрывается страницей 3.

Я установил, что третью страницу можно увидеть первой, установив currentItem to 2

Вы можете видеть зеленую страницу, и если вы нажмете sh ее вправо, вы сможете увидеть фиолетовую страницу (даже при нажатии). Если вы тогда pu sh фиолетовую страницу направо вы должны увидеть синюю страницу, и страницы не должны двигаться (кроме стороны, конечно)

Нечто похожее на это , но с другой стороны, потому что я начинаю с страница 3 и без изменения масштабирования. ( альфа-изменение совершенно нормально и требуется )

Я надеюсь, что кто-то может мне помочь, и спасибо заранее

1 Ответ

0 голосов
/ 10 апреля 2020

После нескольких часов попыток у меня получается желаемый результат

class StackTransformer : ViewPager2.PageTransformer {
    override fun transformPage(view: View, position: Float) {
        view.apply {
            when {
                position < -1 -> {
                    alpha = 0f
                }
                position <= 0 -> {
                    alpha = 1 - position
                    translationX = width * -position
                    ViewCompat.setTranslationZ(this, -1f)
                }
                position <= 1 -> {
                    alpha = 1f
                    translationX = 0f
                    ViewCompat.setTranslationZ(this, 0f)
                }
                else -> {
                    alpha = 0f
                }
            }
        }
    }
}
...