如何等待片段事务直到创建片段视图

时间:2019-02-01 16:11:07

标签: android animation transactions fragment

在完全创建新的片段视图之前,是否有办法等待片段事务的动画?

非常感谢您的帮助。

在我的情况下,创建视图需要一些时间,因为设置了约束并且使用SpannableStringBuilder格式化了文本。因此,在大多数情况下,由于主线程上的工作量过多,因此会跳过动画。

// Kotlin

val newFragment = MyFragment()
val backStackName = "myfragment"

val fragmentManager = activity.supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()

fragmentTransaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right, R.anim.slide_in_right, R.anim.slide_out_right)
fragmentTransaction.add(R.id.MyFragmentLayout, newFragment)
fragmentTransaction.addToBackStack(backStackName)
fragmentTransaction.commit()

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

而不是像这样使用自定义动画

fragmentTransaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right, R.anim.slide_in_right, R.anim.slide_out_right)

我用enterTransition

val enterTransition = Slide(Gravity.RIGHT)
enterTransition.addTarget(R.id.MyFragmentLayout)
newFragment.enterTransition = enterTransition

现在,在创建视图之前,动画将不会开始。