У меня есть пользовательское преобразование переворота в 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
}
}
}
}
Мне нужно замедлить переход, есть идеи? Заранее спасибо!