如何在Android应用程序中一次更改所有的活动转换?

我知道我可以在startActivity()或finish()之后使用以下代码更改活动转换

activity.overridePendingTransition(R.anim.activity_close_enter, R.anim.activity_close_exit);

但是如果我在我的应用程序中有十个活动,我必须这样做十次; 而且很难修改。 所以我想知道是否有一种方法来设置应用程序内的所有活动的一次转换。 AndroidManifest.xml中是否有相应的configuration

谢谢!

Solutions Collecting From Web of "如何在Android应用程序中一次更改所有的活动转换?"

你想先在res / styles.xml中创build一个<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" /> 

看这些链接供参考:

  • Android参考 – 应用主题
  • Android参考 – WindowEnterAnimation

我知道这已经回答了,但这是我在我的。 我们仍然支持API 14,所以有一些animation缺失,我必须从API 22(sli​​de_in_right,slide_out_left)拉入项目。 当你打开一个新的活动,并将closures的幻灯片向左滑动时,它会在屏幕上滑动。 当你按下后,它会做相反的操作,从左边滑动前一个屏幕,并向右closures当前屏幕。

 <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> 

我的解决scheme大多是像JPM的答案。 但是这里有一些你可能需要的附加文件。

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item> </style> <style name="CustomActivityAnimation" 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">@anim/slide_in_left</item> <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item> </style> 

创buildres文件夹下的anim文件夹,然后创build这四个animation文件:

slide_in_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

slide_out_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

slide_in_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

slide_out_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_mediumAnimTime"/> </set>