我的应用程序中有多个不同的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”并且发生了默认动画。
我似乎无法弄清楚为什么会这样。
答案 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);
}
当然,您必须在目标活动中实现这一点。