如何在RTL模式的view pager中实现立方体效果?
How to achieve cube effect in view pager in RTL mode?
我想在滑动ViewPager
个片段时实现立方体动画效果。像这样:
我正在使用这段代码来实现:
class CubeOutTransformer : ViewPager2.PageTransformer {
override fun transformPage(page: View, position: Float) {
val deltaY = 0.5F
page.pivotX = if (position < 0F) page.width.toFloat() else 0F
page.pivotY = page.height * deltaY
page.rotationY = 45F * position
}
}
但是我现在的效果是这样的:
只有当我处于 RTL 模式时才会发生这种情况,而在 LTR 模式下一切正常。但是我想在RTL模式下实现那种效果。谁能帮我?谢谢
你需要扭转一些事情:
- 条件从
if (position < 0F)
到if (position > 0F)
- Y方向的旋转从
45F
到-45F
class CubeOutTransformerRTL : ViewPager2.PageTransformer {
override fun transformPage(page: View, position: Float) {
val deltaY = 0.5F
page.pivotX = if (position > 0F) page.width.toFloat() else 0F
page.pivotY = page.height * deltaY
page.rotationY = -45F * position
}
}
预览:
我想在滑动ViewPager
个片段时实现立方体动画效果。像这样:
我正在使用这段代码来实现:
class CubeOutTransformer : ViewPager2.PageTransformer {
override fun transformPage(page: View, position: Float) {
val deltaY = 0.5F
page.pivotX = if (position < 0F) page.width.toFloat() else 0F
page.pivotY = page.height * deltaY
page.rotationY = 45F * position
}
}
但是我现在的效果是这样的:
只有当我处于 RTL 模式时才会发生这种情况,而在 LTR 模式下一切正常。但是我想在RTL模式下实现那种效果。谁能帮我?谢谢
你需要扭转一些事情:
- 条件从
if (position < 0F)
到if (position > 0F)
- Y方向的旋转从
45F
到-45F
class CubeOutTransformerRTL : ViewPager2.PageTransformer {
override fun transformPage(page: View, position: Float) {
val deltaY = 0.5F
page.pivotX = if (position > 0F) page.width.toFloat() else 0F
page.pivotY = page.height * deltaY
page.rotationY = -45F * position
}
}
预览: