Android系统5.0以下,activity进入动画是从中间向四周扩散,退出动画是从四周向中间聚拢,最后消失。有时候我们觉得这种效果不好,那么我们可以指定Activity的进入和退出动画
如果现在Activity1跳转到Activity2,在跳转的过程中我么可以指定Activity2的进入动画方式通过使用 overridePendingTransition(R.anim.activity_slide_enter_bottom, R.anim.activity_alpha_exit); 方法来实现,注意此方法写在StartActivity之后
startActivity(new Intent(Activity1.this,Activity2.class)); //参数一:Activity2进入动画 参数二:Activity1退出动画 overridePendingTransition(R.anim.activity_slide_enter_bottom, R.anim.activity_alpha_exit);当点击返回键的时候,Activity2销毁的时候,也可以以指定Activity2退出的动画,通过使用 overridePendingTransition(R.anim.activity_alpha_enter, R.anim.activity_slide_exit_bottom);方法来实现,注意此方法写在finish()之后
@Override public void finish() { super.finish(); //参数一:Activity1进入动画,参数二:Activity2退出动画 overridePendingTransition(R.anim.activity_alpha_enter, R.anim.activity_slide_exit_bottom); }接下来我们就来看看我们自定义的动画xml文件把
1.在res文件夹下新建一个anim文件夹 2.在anim文件夹下新建activity_slide_enter_bottom.xml,activity_alpha_exit.xml,activity_alpha_enter.xml, activity_slide_exit_bottom.xml四个文件activity_slide_enter_bottom.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromYDelta="100%" android:toYDelta="0" /> <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>activity_slide_exit_bottom.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromYDelta="0" android:toYDelta="100%" /> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0.0" /> </set>activity_alpha_exit.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="3000" android:fromAlpha="1.0" android:toAlpha="0" /> </set>activity_alpha_enter.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>1.在AndroidManifest.xml文件中设置Activity的样式
<activity Android:name="com.zhiming.Activity2" android:theme="@style/ThemeActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>2.在values文件夹下的themes.xml自定义Activity进入和退出动画主题、
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="ThemeActivity" parent="android:Theme.Light.NoTitleBar"> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> </style> </resources>3.在values文件夹下的styles.xml中自定义Activity进入和退出动画样式
<!-- Activity进出入动画 --> <style name="AnimationActivity" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/activity_slide_enter_right</item> <item name="android:activityOpenExitAnimation">@anim/activity_slide_exit_left</item> <item name="android:activityCloseEnterAnimation">@anim/activity_slide_enter_left</item> <item name="android:activityCloseExitAnimation">@anim/activity_slide_exit_right</item> </style> activityOpenEnterAnimation Activity2进入动画 activityOpenExitAnimation Activity1退出动画 activityCloseEnterAnimation Activity2销毁的时候,Activity1进入的动画 activityCloseExitAnimation Activity2退出动画4.在res/anim 文件夹下新建activity_slide_enter_right.xml,activity_slide_exit_left.xml,activity_slide_enter_left.xml activity_slide_exit_right.xml文件
activity_slide_enter_right.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="100%" android:toXDelta="0" > </translate> <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>activity_slide_exit_left.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="0" android:toXDelta="-100%" > </translate> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0" /> </set>activity_slide_enter_left.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="-100%" android:toXDelta="0" > </translate> <alpha android:duration="300" android:fromAlpha="0" android:toAlpha="1" /> </set>activity_slide_exit_right.xml代码如下
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="0" android:toXDelta="100%" > </translate> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0" /> </set>总结:相比于这两种方式,我更加推荐使用第二种方式,比较简单方便
