Android-如何在活动更改之间停止动画

Android-如何在活动更改之间停止动画,android,animation,android-intent,flags,Android,Animation,Android Intent,Flags,我的应用程序中有多个不同的活动,在活动之间切换时,我不想要任何过渡动画。以下是我在不同活动之间的变化: Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

我的应用程序中有多个不同的活动,在活动之间切换时,我不想要任何过渡动画。以下是我在不同活动之间的变化:

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);
这在我第一次开始新的活动时效果很好。没有动画,但当我返回到已启动的活动时,似乎忽略了“Intent.FLAG\u Activity\u no\u animation”,并出现默认动画


我似乎不明白为什么会发生这种情况。

你试过了吗?

我需要它,因为我必须在单击菜单时创建活动

我做了以下工作:

我将
标志\u活动\u否\u动画
标志添加到意图中。它在第一次创建活动时停止了动画

但是,当我们再次单击同一菜单(可能来自不同的活动)时调用的堆栈中的活动,它有动画


因此,我添加了
FLAG\u ACTIVITY\u NO\u HISTORY
,以在活动开始新活动时清除或完成该活动。这导致我再次单击菜单时创建了一个新的活动(没有动画)。

您可以通过代码将FLAG_activity_REORDER_设置为\u FRONT,并在清单中标记_activity_NO_动画,如下所示:

在res/values/styles.xml中创建noAnimTheme

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

@空的


@空的
并在清单中使用它:

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


我希望它有助于在创建第二个意图后添加此内容

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

当您返回到第一个意图时,动画将被禁用,虽然对我有效,但如果您正在使用FLAG_ACTIVITY_REORDER_to_FRONT,则您还可以覆盖onNewIntent以供以后的startActivity调用。这只适用于带到前线州,而不是第一次呼叫

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

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

不,我没有尝试过“overridePendingTransition(0,0)”。我在每次活动onResume()和onPause()中都使用了该选项。它工作得很好。谢谢它对我的Nexus7有帮助,但对我的SGS4没有帮助。有没有其他办法解决这个问题?谢谢。@oleg.semen:尝试从中的主题方法。但这不是错误的“不制作动画”修复,同时允许活动仍在创建中吗?我相信,将活动从后堆栈中带出而不制作动画,可能是最好的解决方案。
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    overridePendingTransition(R.anim.whatever, R.anim.whatever);
}