Как замедлить анимацию перехода в ViewPager2 при программном изменении страниц

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

Мне нужно поведение с 2-мя фрагментами, первый загружается и через несколько миллисекунд программно запускаю переход, вижу анимацию и 2-й фрагмент, вот и все.

Вот код, связанный с пейджером:

viewPager.apply {
    adapter = ViewPagerAdapter(this@HostFragment)
    setPageTransformer(VerticalFlipTransformation())
    isUserInputEnabled = false
}

В какой-то момент я запускаю переход следующим образом:

viewPager.currentItem = 1

Вот мой адаптер:

private class ViewPagerAdapter(fragment: Fragment) :
    FragmentStateAdapter(fragment) {

    override fun getItemCount() = 2

    override fun createFragment(position: Int) = if (position == 0) {
        Fragment1()
    } else {
        Fragment2()
    }
}

Наконец, вот преобразование, которое я использую:

class VerticalFlipTransformation : ViewPager2.PageTransformer {

    override fun transformPage(page: View, position: Float) {
        page.translationX = -position * page.width
        page.cameraDistance = 20000f

        if (position < 0.5 && position > -0.5) {
            page.visibility = VISIBLE
        } else {
            page.visibility = GONE
        }

        when {
            position < -1 -> {
                page.alpha = 0f
            }
            position <= 0 -> {
                page.alpha = 1f
                page.rotationX = 180 * (1 - abs(position) + 1)
            }
            position <= 1 -> {
                page.alpha = 1f
                page.rotationX = -180 * (1 - abs(position) + 1)
            }
            else -> {
                page.alpha = 0f
            }
        }
    }
}

Мне нужно замедлить переход, есть идеи? Заранее спасибо!


person Alejandro Casanova    schedule 28.08.2020    source источник
comment
stackoverflow.com/a/59235979/5599807   -  person Siarhei    schedule 20.10.2020
comment
@ Алехандро, ты нашел решение?   -  person Gary Chen    schedule 28.10.2020