我知道可以在startActivity()或finish()后使用以下代码来更改活动转换:
activity.overridePendingTransition(R.anim.activity_close_enter, R.anim.activity_close_exit);
但是,如果我的应用程序有十个活动,我必须这样做十次;而且修改起来很困难。所以我想知道是否有一种方法可以一次性为应用程序中的所有活动设置转换。在AndroidManifest.xml文件中是否有相应的配置项?
谢谢!
我知道可以在startActivity()或finish()后使用以下代码来更改活动转换:
activity.overridePendingTransition(R.anim.activity_close_enter, R.anim.activity_close_exit);
但是,如果我的应用程序有十个活动,我必须这样做十次;而且修改起来很困难。所以我想知道是否有一种方法可以一次性为应用程序中的所有活动设置转换。在AndroidManifest.xml文件中是否有相应的配置项?
谢谢!
您需要首先在res/styles.xml中创建一个<style>
,就像这样:
<style name="YourAnimation.Activity" parent="@android:style/Animation.Activity">
<item name="android:windowEnterAnimation">@anim/your_in_down</item>
<item name="android:windowExitAnimation">@anim/your_out_down</item>
</style>
那么你可以在同一个文件中将样式应用于主题:
<style name="YourTheme" parent="android:Theme.Translucent">
...
<item name="android:windowAnimationStyle">@style/YourAnimation.Activity</item>
</style>
最后,在清单文件中将主题应用于您的活动:
<activity
android:name=".YourActivity"
android:theme="@style/YourTheme" />
参考以下链接:
我知道这个问题已经有答案了,但以下是我的做法。我们仍然支持API 14,所以有一些动画效果缺失,我需要从API 22中将它们引入项目中(slide_in_right, slide_out_left)。这样做可以在打开新活动时滑动屏幕,并将关闭的屏幕向左滑出。当你按返回键时,它会相反地向左滑动前一个屏幕,并向右滑出当前屏幕。
<style name="YourTheme" parent="android:Theme.Translucent">
...
<item name="android:windowAnimationStyle">@style/YourAnimation.Activity</item>
</style>
<style name="YourAnimation.Activity" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<item name="android:activityCloseEnterAnimation">@android:anim/slide_in_left</item>
<item name="android:activityCloseExitAnimation">@android:anim/slide_out_right</item>
</style>
步骤1:创建一个基础活动
步骤2:将所有活动扩展到此基础活动
步骤3:在您的基础活动中添加以下代码
@Override
protected void onStart() {
super.onStart();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
@Override
protected void onPause() {
super.onPause();
if (isFinishing()) {
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
}
}
My solution is mostly like of others...
<style name="YourAnimation.Activity" parent="@android:style/Animation.Activity">
<item name="android:windowEnterAnimation">@anim/slidefromright</item>
<item name="android:windowExitAnimation">@anim/slidetoright</item>
</style>
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowAnimationStyle">@style/YourAnimation.Activity </item>
</style>
</resources>
- Gen Liu
parent="android:Theme.Translucent"
,否则它就无法工作。谢谢。 - Weiyi