以编程方式更改页面时如何减慢ViewPager2中的过渡动画

时间:2020-08-28 22:24:14

标签: android kotlin android-viewpager2

我在ViewPager2中有一个自定义的翻转转换,我禁用了用户输入,因此只能以编程方式更改页面,但是,转换速度太快了。

我需要的行为是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
            }
        }
    }
}

我需要放慢过渡的速度,有什么想法吗?预先感谢!

0 个答案:

没有答案