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

时间:2011-04-14 23:11:29

标签: android animation android-intent flags

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

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

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

我似乎无法弄清楚为什么会这样。

5 个答案:

答案 0 :(得分:42)

您是否尝试过overridePendingTransition()

答案 1 :(得分:16)

您可以按照代码设置FLAG_ACTIVITY_REORDER_TO_FRONT,并在清单中设置FLAG_ACTIVITY_NO_ANIMATION,如下所示:

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

<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"/>

我希望它有所帮助

答案 2 :(得分:3)

我需要这个,因为我必须在点击菜单时创建活动。

我做了以下事情:

我在意图中添加了FLAG_ACTIVITY_NO_ANIMATION标志。它在第一次创建活动时停止了动画。

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

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

答案 3 :(得分:3)

在创建第二个意图后添加此内容

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

当你回到第一个意图时,动画被禁用,虽然

为我工作

答案 4 :(得分:1)

如果您正在使用FLAG_ACTIVITY_REORDER_TO_FRONT,那么您还可以覆盖onNewIntent以用于以后的startActivity调用。这只适用于前置状态而非首次呼叫。

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

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