FragmentTransaction.TRANSIT_NONE 未按预期工作
FragmentTransaction.TRANSIT_NONE is not working as expected
如何在没有任何动画的情况下切换到另一个片段?
我有两个片段,show/hide 它们使用这个:
supportFragmentManager
.beginTransaction()
.hide(currentFragment)
.show(selectedFragment)
.setTransition(FragmentTransaction.TRANSIT_NONE)
.commit()
我希望它们在没有任何动画的情况下切换,但是有一个淡入淡出的动画。
如果我将过渡设置为TRANSIT_FRAGMENT_FADE
,淡入淡出动画会更短:
我正在使用 androidx
版本 1.6.0-alpha02
和 kotlin
版本 1.4.32
谢谢。
FragmentTransactions
为片段 entering
或 exiting
事务设置动画。
show()
:显示一个之前隐藏的片段。这仅与已添加到容器中的片段相关。 Show 将使用 Fragment 最初进入容器时使用的 FragmentTransaction。
hide()
:隐藏现有片段。这仅与视图已添加到容器中的片段相关,因为这将导致视图被隐藏。隐藏将使用片段最初进入交易时设置的 FragmentTransaction。
在你调用 FragmentTransaction 的情况下,它没有设置动画,因为你没有进入或退出容器的片段,你正在使用隐藏和显示来显示你的片段,所以 FragmentTransaction 使用片段最初进入容器时的动画。
如果您想控制动画,我建议您使用 replace
而不是 show
和 hide`。
我发现了问题。
这是因为 onCreate
中设置的共享元素 Transition
。
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
删除此行解决了问题。
但是我想知道在共享元素转换的情况下,我如何才能导航到另一个片段而不使动画消失...
如何在没有任何动画的情况下切换到另一个片段?
我有两个片段,show/hide 它们使用这个:
supportFragmentManager
.beginTransaction()
.hide(currentFragment)
.show(selectedFragment)
.setTransition(FragmentTransaction.TRANSIT_NONE)
.commit()
我希望它们在没有任何动画的情况下切换,但是有一个淡入淡出的动画。
如果我将过渡设置为TRANSIT_FRAGMENT_FADE
,淡入淡出动画会更短:
我正在使用 androidx
版本 1.6.0-alpha02
和 kotlin
版本 1.4.32
谢谢。
FragmentTransactions
为片段 entering
或 exiting
事务设置动画。
show()
:显示一个之前隐藏的片段。这仅与已添加到容器中的片段相关。 Show 将使用 Fragment 最初进入容器时使用的 FragmentTransaction。
hide()
:隐藏现有片段。这仅与视图已添加到容器中的片段相关,因为这将导致视图被隐藏。隐藏将使用片段最初进入交易时设置的 FragmentTransaction。
在你调用 FragmentTransaction 的情况下,它没有设置动画,因为你没有进入或退出容器的片段,你正在使用隐藏和显示来显示你的片段,所以 FragmentTransaction 使用片段最初进入容器时的动画。
如果您想控制动画,我建议您使用 replace
而不是 show
和 hide`。
我发现了问题。
这是因为 onCreate
中设置的共享元素 Transition
。
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
删除此行解决了问题。
但是我想知道在共享元素转换的情况下,我如何才能导航到另一个片段而不使动画消失...