从片段切换到活动,再从活动返回时没有动画效果

6

我的主活动在片段中显示内容。如果我按下一个按钮,将启动另一个具有以下代码行的活动:

Intent intent = new Intent(context, FragmentActivity.class);
Bundle bundle = ActivityOptions.makeCustomAnimation(context, R.anim.slide_in_left, R.anim.slide_out_left).toBundle();
context.startActivity(intent, bundle);

新的活动应该滑入,当前的活动应该滑出。问题是新的活动被正确地动画了,但当前片段没有动画。
更新:这解决了问题,但我不想结束我的活动。
finish();
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);

更新结束
如果我在FragmentActivity中按下返回按钮,会有另一种动画:
@Override
protected void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);
}

这里只有FragmentActivity的动画(R.anim.slide_out_right)起作用,应该播放Main的动画(R.anim.slide_in_right)却没有作用。
我想创建的是这样一个效果:YouTube
1个回答

10
我认为这不是最美的方法,但这就是我解决它的方式: 片段:
Intent intent = new Intent(activity, FragmentActivity.class);
Bundle bundle = ActivityOptions.makeCustomAnimation(activity, R.anim.slide_in_left, R.anim.slide_out_left).toBundle();
activity.startActivity(intent, bundle);
activity.finish();

FragmentActivity:

Intent intent = new Intent(this, Activity.class); // the activity that holds the fragment
Bundle bundle = ActivityOptions.makeCustomAnimation(this, R.anim.slide_in_right, R.anim.slide_out_right).toBundle();
startActivity(intent, bundle);

缺点可能是将所有内容保存在持有碎片的活动中。


startActivity(intent, bundle)API 16 中添加。如果您希望应用程序兼容性,可以使用 ActivityCompat.startActivity(getActivity(), intent, bundle); - Kishan Vaghela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接