使用remove vs hide时未调用自定义动画

时间:2014-09-16 20:52:46

标签: android animation android-fragments android-animation

我有一个片段,我打算在打开时向左滑动,当我们关闭它时向右滑动。 show部分工作正常,但是当我们关闭它时,如果我使用hide()但是我想删除片段以便在配置更改等时不显示它,但是当remove()时,用于hide的相同动画不起作用叫做。请参阅下面的代码。

此代码的作用意味着它显示面板转到右侧动画

Fragment fragment = getFragmentManager().findFragmentByTag(Tags.PANEL_FRAGMENT_TAG.name());
        if (fragment != null) {
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            transaction.setCustomAnimations(R.animator.slide_in_right, R.animator.slide_out_right);
            transaction.hide(fragment);
            transaction.commit();
        }

这段代码不起作用。有什么指针吗?如何删除片段和动画仍然有效..

 Fragment fragment = getFragmentManager().findFragmentByTag(Tags.PANEL_FRAGMENT_TAG.name());
            if (fragment != null) {
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.setCustomAnimations(R.animator.slide_in_right, R.animator.slide_out_right);
                **transaction.remove(fragment);**
                transaction.commit();
            }

1 个答案:

答案 0 :(得分:1)

我在stackoverflow的另一篇文章中找到了理由

这是原帖 How to animate fragment removal

推理:

  

"退出视图在输入视图的画布上设置动画,如果是   没有进入画布,没有动画画布。

     

要显示动画,我必须始终使用替换并使用输入   与那些人相同大小的片段。动画结束后   完成后我将新片段的视图设置为已消失。"