在Android 1.6中启动一个没有转换动画的新活动

29

我知道从API级别5开始,可以在意图中指定标志,以防止在启动新活动时应用正常动画:

myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

然而,我的问题是:是否有一种方法可以在支持Android 1.6的应用程序中实现相同的功能?

5个回答

51

在较新的版本中,您需要在启动活动后立即使用0,0覆盖过渡:

Intent i = new Intent(this, YourNewActivity.class); 
startActivity(i);
overridePendingTransition(0,0);

我在2.1和4.0.3上尝试过,对我有用。 =)

我在文档这里找到了它。


19
在启动的Activity中使用此代码:getWindow().setWindowAnimations(0);

谢谢。这行代码应该放在我要启动的活动里面还是从中启动它的那个活动里面? - Matt Colliss

6
这个方法对我很有用(Android 2.2):
Intent intent = new Intent(getContext(), YourClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);

这对我在4.0.3上有效 - 不确定为什么会被踩...也许是因为问题要求在Android 1.6上做些什么? - infl3x
它会在2.3.5上引起反向转换。 - swebal

5

提供信息,我使用的是4.4.2版本,以下是我发现的唯一有效的方法:

防止打开动画:在启动活动的onCreate()中添加overridePendingTransition(0,0)。

防止关闭动画:在finish()后立即调用overridePendingTransition(0,0)。

以下方法不起作用(至少在我的4.4.2版本中不起作用):(1) 在onCreate()中调用getWindow().setWindowAnimations(0)(传入非零数字可以起作用,但这是一个丑陋的hack,因为它期望一个resId),以及(2) 在startActivity()之后立即调用overridePendingTransition(0,0) -- 动画仍然存在。


0
将以下代码放在Activity的onCreate方法中:
getWindow().setWindowAnimations(0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接