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

时间:2010-04-16 07:37:47

标签: android animation android-activity

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

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

我想要的是不应该发生默认动画,并且应该发生我想要的动画。

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

4 个答案:

答案 0 :(得分:137)

从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。 ID为0将禁用动画。在startActivity来电后立即拨打电话。

即:

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

API 3 +:

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

即:

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

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

这也适用于1.5 API(Level 3)。

答案 1 :(得分:78)

您必须使用OverridePendingTransition方法来实现它,它位于Activity class中。 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);
}

答案 2 :(得分:29)

编写一个教程,以便您可以动画制作活动,

享受:

http://blog.blundellapps.com/animate-an-activity/

答案 3 :(得分:3)

Jelly Bean使用ActivityOptions.makeCustomAnimation()方法添加了对此的支持。当然,因为它只是在Jelly Bean上,所以它实际上毫无价值。