我正在尝试使用幻灯片动画切换我的片段
使用此代码:
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%" />
答案 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支持库中存在错误。获得它的唯一机会是获取支持库源并自行重新编译