【发布时间】:2014-08-18 03:36:09
【问题描述】:
我有一个片段,它附加了这样的动画:
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().setCustomAnimations(
R.animator.card_flip_right_in, R.animator.card_flip_right_out,
R.animator.card_flip_left_in, R.animator.card_flip_left_out)
.replace(R.id.frame_container, fragment).commit();
我有两个顾虑。
1) 在动画开始之前,Fragment 不会完全渲染(片段中会发生一些相当复杂的事情,包括可能的 HTTP 调用,它会获取绘制所需的数据。
2) 在片段中还有其他动画,除非我确定用户确实在看它们,否则我不想开始它们。
我怀疑处理 (1) 的最佳方法是在 Fragment 报告它已完成所有部件的组装之前不要调用 commit(),但是对于 (2) 我看不出有什么办法知道它肯定是附加到 Activity 和渲染的(因此在 Fragment 内启动动画是安全的)。
所以,我想我的问题是...... commit() 是阻塞调用吗?我可以确定在下一行(或在 Fragment 过渡动画的末尾)渲染了 Fragment 并且可以安全地开始制作动画吗?或者我应该在 Transition 上使用动画侦听器并告诉 Fragment 在 Transition 动画完成后开始其内部动画?
【问题讨论】:
标签: android android-fragments race-condition