在Android中调用另一个活动时如何提供动画?

新手上路,请多包涵

我有两个活动 A 和 B。我想在 Activity A 调用 B 时收缩动画并在 Activity B 调用 A 时最大化动画。我不需要动画 xml 文件。

当我们在 Android 中调用另一个 Activity 时,它会给出默认动画,然后调用收缩动画。

我想要的是默认动画不应该出现,而我想要的动画应该出现。

我们真的可以在调用另一个 Activity 时给出动画吗?

原文由 sunil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 614
2 个回答

从 API 16 开始,您可以在调用 Context.startActivity(Intent, Bundle) 或相关方法时提供活动选项包。它是通过 ActivityOptions 构建器创建的:

 Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options =
   ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());

如果您使用支持库,请不要忘记查看 ActivityOptions 构建器和 ActivityOptionsCompat 的其他方法。


API 5+:

对于面向 API 级别 5+ 的应用程序,有活动 overridePendingTransition 方法。传入和传出动画需要两个资源 ID。 0 的 id 将禁用动画。在 startActivity 调用之后立即调用它。

IE:

 startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);


API 3+:

您可以在意图中使用 Intent.FLAG_ACTIVITY_NO_ANIMATION 标志来阻止默认动画(从右侧滑入)。

IE:

 Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);

然后在你的活动中你只需要指定你自己的动画。

这也适用于 1.5 API(级别 3)。

原文由 whlk 发布,翻译遵循 CC BY-SA 3.0 许可协议

您必须使用 OverridePendingTransition 方法来实现它,它在 Activity 类 中。 apidemos 示例的 res/anim 文件夹中的示例动画。核实。不仅仅是查看 ApiDemos/App/Activity/animation 中的演示。

例子:

 @Override
public void onResume(){
    // TODO LC: preliminary support for views transitions
    this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}

原文由 Praveen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题