片段隐藏动画不播放

时间:2012-12-18 13:08:04

标签: android android-fragments android-animation

我正在尝试使用幻灯片动画切换我的片段

使用此代码:

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();        
SearchPanelFragment existingFragment = (SearchPanelFragment) manager.findFragmentByTag(SearchPanelFragment.FRAGMENT_NAME);        
transaction.setCustomAnimations(R.xml.slide_down_search_panel, R.xml.slide_up_search_panel);        
if (existingFragment != null) {
    if (existingFragment.isVisible())
        transaction.remove(existingFragment);       
} else {
    transaction.add(R.id.top_panel_fragment, new SearchPanelFragment(this), SearchPanelFragment.FRAGMENT_NAME);
}

    transaction.commit();

到目前为止,我只能在transaction.add上输入动画。何时播放退出动画?我只能在使用transaction.replace时才能得到它,但后来我只是用一个相同的新片段交换一个旧片段,而我想要的是隐藏/删除/分离/无论它是什么使它消失并且退出动画播放< / p> 编辑:我试图隐藏,删除和分离。无论我做什么,动画都不会播放。它仅在添加,显示和替换时播放

编辑2: 第二个动画可能有问题。请看看他们两个。第一个滑下来,似乎工作得很好。

向下滑动

<translate
    android:duration="500"
    android:fromXDelta="0%"
    android:fromYDelta="-100%"
    android:toXDelta="0%"
    android:toYDelta="0%" />

向上滑动

<translate
    android:duration="700"
    android:fromXDelta="0%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="-100%" />

2 个答案:

答案 0 :(得分:9)

你实际上使用了错误的功能。

根据setCustomAnimations(int enter, int exit)的文档:

  

设置特定的动画资源,以便为在此事务中进入和退出的片段运行。 弹出后筹码时不会播放这些动画。

相反,您应该使用setCustomAnimations (int enter, int exit, int popEnter, int popExit)

  

设置特定的动画资源,以便为在此事务中进入和退出的片段运行。 {@ 1}}和popEnter动画将针对进入/退出操作进行播放,特别是在弹出后筹码时。

答案 1 :(得分:8)

修改

The bug has been fixed as of June 7th 2013.我相信从修订版18开始,错误已经修复。

如果您使用的是最新的支持库修订

,这不再是一个问题

旧答案

http://code.google.com/p/android/issues/detail?id=32405支持库中存在错误。获得它的唯一机会是获取支持库源并自行重新编译