在我的活动中,只需按一下按钮,我就可以使用自定义动画将新片段替换为当前片段,如本例所示。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_anomalie:
Fragment contentFragment = getFragmentManager().findFragmentById(R.id.content);
if(contentFragment instanceof AnomalieListFragment)
{
getFragmentManager().popBackStack();
return true;
}
else
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
anomalieFragment = new AnomalieListFragment();
ft.replace(R.id.content, anomalieFragment);
ft.addToBackStack(null);
ft.commit();
}
...
然而,popping back the stack并未显示任何动画。 有没有办法像使用setCustomAnimations方法在FragmentTransaction中那样指定自定义动画?
答案 0 :(得分:91)
在进一步阅读文档后,我发现使用setCustomAnimation
getFragmentManager().popBackStack();
签名允许在按下后退按钮或调用...
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out, android.R.animator.fade_in, android.R.animator.fade_out);
anomalieFragment = new AnomalieListFragment();
ft.replace(R.id.content, anomalieFragment);
ft.addToBackStack(null);
ft.commit();
...
时播放动画
我修改了我的代码
{{1}}