ViewPager2 堆栈 PageTransform

ViewPager2 Stack PageTransform

我需要一些有关 ViewPager2 的 PageTransformer 的帮助。

我的 ViewPager2 中有 3 个页面。 每一页都应该与下一页重叠。 另外,所有的页面都应该稳固地在中间,只能滑动到一边。



示例:
第 1 页:蓝色
第2页:紫色
第 3 页:绿色

第 1 页与第 2 页重叠,第 2 页与第 3 页重叠。

我把currentItem设置为2先看到第3页

您可以看到绿色页面,如果将其向右推,您应该可以看到紫色页面(即使在推的同时) 如果您然后将紫色页面向右推,您应该会看到蓝色页面 而且页面不应该移动(当然除了一边)

Something similar to this 但重叠是相反的,因为我从第 3 页开始并且没有更改缩放比例。 (alpha 变化 完全没问题, 想要

我希望有人能帮助我并提前致谢

经过几个小时的尝试,我得到了想要的结果

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
                }
            }
        }
    }
}