在Android中调用其他活动时如何提供动画?


115

我有两个活动A和活动B。我想在活动A调用B时具有收缩动画,而在活动B调用A时使动画最大化。为此,我不需要动画xml文件。

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

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

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

Answers:


144

从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);

然后只需在“活动”中指定自己的动画即可。

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


4
说“指定自己的动画”是什么意思?你怎么做到这一点?谢谢!
2011年

我也有同样的问题。可能是在onResume和onPause中的开始动画中。
蒂玛

有没有办法使用Animator?
Android开发人员

您也可以在调用finish()之后使用相同的名称!
thiagolr 2015年

是不是 R.anim.fade_in仍然是一个XML文件,动画中,我们假设有在res\anim
Alex Jolig 2015年

78

您必须使用OverridePendingTransition方法来实现它,该方法在Activity类中。apidemos示例的res / anim文件夹中的示例动画。核实。以上为您在演示ApiDemos /应用/活动/动画

例:

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

1
谢谢回复。API级别5支持方法overridePendingTransition,并且我希望Android 1.5支持该应用程序。还有其他方法可以将一个活动的动画提供给另一个活动。
sunil

5
太棒了!这很有趣
某处某人

@sunil我有与您相同的问题。您能解决问题吗?api级别3或4(不是5)的动画
Dr.jacky 2012年

如果将动画代码保留在onResume()中,则当用户离开应用程序并返回时,动画将播放。在许多应用程序中都不理想。
Vihaan Verma

我需要添加super.onResume();,得到的是:“ android.util.SuperNotCalledException:活动{com.abc.MyActivity}没有调用到super.onResume()”
Gene Bo


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.