Android – 如何停止活动更改之间的animation

我在我的应用程序中有多个不同的活动,我不想在活动之间切换时任何过渡animation。 下面是我如何改变活动之间:

Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); 

这是第一次开始一个新的活动的作品。 没有animation,但是当我回到已经启动的Activity时,似乎忽略了“Intent.FLAG_ACTIVITY_NO_ANIMATION”,并且发生了默认animation。

我似乎无法弄清楚为什么会发生这种情况。

Solutions Collecting From Web of "Android – 如何停止活动更改之间的animation"

你有没有尝试overridePendingTransition()

您可以通过代码和FLAG_ACTIVITY_NO_ANIMATION在清单中设置FLAG_ACTIVITY_REORDER_TO_FRONT,如下所示:

在res / values / styles.xml中创buildnoAnimTheme

 <style name="noAnimTheme" parent="android:Theme"> <item name="android:windowAnimationStyle">@null</item> </style> 

要么

 <style name="noAnimTheme" parent="android:Theme.NoTitleBar"> <item name="android:windowAnimationStyle">@null</item> </style> 

并在清单中使用它:

 <activity android:name="SecondActivity" android:theme="@style/noAnimTheme"/> 

我希望它有帮助

我需要这个,因为我必须创build点击菜单的活动。

我做了以下几点:

我添加了FLAG_ACTIVITY_NO_ANIMATION标志的意图。 它在第一次创build活动时停止了animation。

然而,当我们再次点击相同的菜单(可能来自不同的活动)时调用堆栈中的活动,它具有animation。

所以我添加了FLAG_ACTIVITY_NO_HISTORY来清除或者完成活动,当它开始一个新的活动。 这导致创build一个新的活动(没有animation),当我再次点击菜单。

在创build第二个意图之后添加这个

  Intent i = new Intent(SecondActivity.this, FirstActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); 

当你回到第一个意图,animation被禁用,虽然为我工作

如果您使用的是FLAG_ACTIVITY_REORDER_TO_FRONT,那么您也可以为以后的startActivity调用重写onNewIntent。 这将只是为了带来前面的状态,而不是第一次打电话。

 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); overridePendingTransition(R.anim.whatever, R.anim.whatever); } 

当然,你必须在目标活动中实现这一点。