如何在Android Lollipop中推迟片段的输入转换?

Ale*_*ood 17 android android-5.0-lollipop activity-transition shared-element-transition fragment-transitions

在Android Lollipop中,Activity#postponeEnterTransition()Activity#startPostponedEnterTransition()方法使Activity能够延迟开始进入和退出共享元素转换,直到加载所有数据.这些非常适合Activity过渡.

有没有办法在使用Fragment过渡时达到相同的效果?

Geo*_*unt 12

片段转换中没有直接的等价物,因为片段使用FragmentTransaction,我们无法真正推迟应该在事务中发生的事情.

要获得等效项,您可以添加片段并将其隐藏在事务中,然后在片段准备就绪时,删除旧片段并在事务中显示新片段.

getFragmentManager().beginTransaction()
    .add(R.id.container, fragment2)
    .hide(fragment2)
    .commit();
Run Code Online (Sandbox Code Playgroud)

后来,当fragment2准备就绪时:

getFragmentManager().beginTransaction()
    .addSharedElement(sharedElement, "name")
    .remove(fragment1)
    .show(fragment2)
    .commit();
Run Code Online (Sandbox Code Playgroud)