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

sun*_*nil 113 animation android android-activity

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

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

我想要的是不应该发生默认动画,我想要的动画应该发生.

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

whl*_*hlk 139

从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());
Run Code Online (Sandbox Code Playgroud)

如果您使用支持库,请不要忘记检查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);
Run Code Online (Sandbox Code Playgroud)

API 3+:

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

即:

Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 当你说"指定你自己的动画"时,你是什么意思?你怎么做到这一点?谢谢! (4认同)

Pra*_*een 78

您必须使用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);
}
Run Code Online (Sandbox Code Playgroud)

  • 真棒!这玩起来很有趣 (5认同)

Blu*_*ell 29

写了一个教程,这样你就可以动画你的活动了,

请享用:

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