在Android 1.6中启动没有过渡动画的新活动

Mat*_*iss 29 animation android android-intent android-activity

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

myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
Run Code Online (Sandbox Code Playgroud)

但是,我的问题是:有没有办法在支持Android 1.6的应用程序中实现相同的功能?

gul*_*der 51

在较新的版本中,您希望在启动活动后立即覆盖0,0的转换:

Intent i = new Intent(this, YourNewActivity.class); 
startActivity(i);
overridePendingTransition(0,0);
Run Code Online (Sandbox Code Playgroud)

我在2.1和4.0.3上试过这个,它对我有用.=)

我在这里的文档中找到了它


Wro*_*lai 20

使用此:getWindow().setWindowAnimations(0);Activity开始之内.


小智 6

这个解决方案对我有用(Android 2.2):

Intent intent = new Intent(getContext(), YourClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

  • 为什么这会被贬低?它看起来像一个很好的解决方案 (2认同)

Ste*_*e B 5

仅供参考,我在4.4.2,这是我发现的唯一工作:

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

要阻止关闭动画:在finish()之后,立即调用overridePendingTransition(0,0).

这些不起作用(至少不在我的4.4.2版本中):( 1)在onCreate()中调用getWindow().setWindowAnimations(0)(传入一个非零数字DOES工作,但那是一个丑陋的黑客攻击它期待一个resId),以及(2)在startActivity()之后立即调用overridePendingTransition(0,0) - 动画仍然存在.