片段隐藏动画不播放

Jac*_*ień 7 android android-animation android-fragments

我正试图用幻灯片动画切换我的片段

使用此代码:

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();
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只进入transaction.add动画播出何时退出动画?我只能在使用时得到它,transaction.replace但后来我只是用一个相同的新片段交换一个旧片段,我想要的是隐藏/删除/分离/无论它是什么使它消失,并且退出动画播放

编辑:我试图隐藏,删除和分离.无论我做什么,动画都不会播放.它只在添加,显示和替换时播放

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

滑下

<translate
    android:duration="500"
    android:fromXDelta="0%"
    android:fromYDelta="-100%"
    android:toXDelta="0%"
    android:toYDelta="0%" />
Run Code Online (Sandbox Code Playgroud)

向上滑动

<translate
    android:duration="700"
    android:fromXDelta="0%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="-100%" />
Run Code Online (Sandbox Code Playgroud)

vin*_*3m1 9

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

根据以下文件setCustomAnimations(int enter, int exit):

设置特定的动画资源以针对在此事务中进入和退出的片段运行.弹出后栈时不会播放这些动画.

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

设置特定的动画资源以针对在此事务中进入和退出的片段运行.popEnterpopExit动画将播放的输入/专弹出返回堆叠时退出操作.


Gre*_*nsy 8

编辑

该错误已于2013年6月7日修复.我相信从修订版18开始,该错误已得到修复.

如果您使用的是最新的支持库修订版,则不再是此问题

老答案

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

  • 它是android风格)有些问题在几年内没有修复 (4认同)