Activity进入和退出动画
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>
总结:相比于这两种方式,我更加推荐使用第二种方式,比较简单方便