我有一个活动,通过按钮点击启动另一个活动。在较新的Android操作系统版本中,默认情况下,操作系统会将新的活动从右到左滑动的方式进行动画。
是否有一种方法可以禁用此动画效果?我只想让新的活动出现而没有任何动画效果。
我有一个活动,通过按钮点击启动另一个活动。在较新的Android操作系统版本中,默认情况下,操作系统会将新的活动从右到左滑动的方式进行动画。
是否有一种方法可以禁用此动画效果?我只想让新的活动出现而没有任何动画效果。
使用FLAG_ACTIVITY_NO_ANIMATION
标志在启动Activity时可以很好地禁用动画效果。
要禁用在调用finish()
时触发的类似动画,即从右侧向左侧滑动的动画,您可以在调用finish()
后调用overridePendingTransition(0, 0)
,下一个动画将被排除。
如果在调用startActivity(...)
之后调用overridePendingTransition(0, 0)
,则它也适用于切换进入动画。
免责声明:这是10年以上的答案。请参考最新的可用文档,因为无论你信不信,事情是会发生变化的。
在我看来,this 这里的答案以最优雅的方式解决了问题..
开发者应该创建一个样式,
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
看!简单又容易。。
P.S. 请注明原作者的来源
finish()
之前禁用完成转换调用overridePendingTransition(0, 0)
。 - 6rchid申请
startActivity(new Intent(FirstActivity.this,SecondActivity.class));
然后
overridePendingTransition(0, 0);
这将停止动画。
在我看来,最好的解决方案是使用 "overridePendingTransition(0, 0);"
来避免在想要 Intent
到一个 Activity
时看到动画:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
为了在按下返回按钮时不看到动画,请在您的newactivity
中重写onPause
方法。
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
在启动时只需指定Intent.FLAG_ACTIVITY_NO_ANIMATION
标志即可。
当禁用“结束Activity时的动画”时,这对我很有效。
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
FLAG_ACTIVITY_NO_ANIMATION可能有效,但当与FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK组合使用时,对我没有起作用。当我横向导航到其他顶级视图时,我似乎看到了创建一个新任务的动画。
在此情况下有效的方法是,在我的startActivity()调用后立即调用“overridePendingTransition(0,0);”或onPause()后立即调用。两种方法都可以,但在startActivity()之后这样做可以更好地控制我何时想要动画以及何时不想要。
我遇到了一个类似的问题,在从一个活动滑动转换到另一个活动时出现了黑屏,使用overridependingtransition
。我按照下面的方法操作,它起作用了。
1)在anim文件夹中创建了一个noanim.xml
文件。
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="0%p" />
以及使用
overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);
onStart()
中添加了overridePendingTransition(0,0)
:@Override
protected void onStart() {
overridePendingTransition(0,0);
super.onStart();
}
FLAG_ACTIVITY_NO_ANIMATION
和overridePendingTransition
仅适用于API Level 5或更高版本。 - dvsstartActivity
或finish
或其他执行Activity切换的方法(在我的情况下是navigateUpTo()
)之后,务必调用overridePendingTransition(0,0)
。这里顺序非常重要。 - SMBiggs