我知道从API级别5开始,可以在意图中指定标志,以防止在启动新活动时应用正常动画:
myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
然而,我的问题是:是否有一种方法可以在支持Android 1.6的应用程序中实现相同的功能?
我知道从API级别5开始,可以在意图中指定标志,以防止在启动新活动时应用正常动画:
myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
然而,我的问题是:是否有一种方法可以在支持Android 1.6的应用程序中实现相同的功能?
在较新的版本中,您需要在启动活动后立即使用0,0覆盖过渡:
Intent i = new Intent(this, YourNewActivity.class);
startActivity(i);
overridePendingTransition(0,0);
我在2.1和4.0.3上尝试过,对我有用。 =)
我在文档这里找到了它。
Activity
中使用此代码:getWindow().setWindowAnimations(0);
。Intent intent = new Intent(getContext(), YourClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);
提供信息,我使用的是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) -- 动画仍然存在。
getWindow().setWindowAnimations(0);