Android Activity切换动画(进入和退出)
2018-07-18 本文已影响1188人
wuchao226
方式一
通过overridePendingTransition方法实现Activity切换动画
overridePendingTransition方法是Activity中提供的Activity跳转动画方法,通过该方法可以实现Activity跳转时的动画效果
override fun startActivity(intent: Intent?) {
super.startActivity(intent)
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
}
override fun finish() {
super.finish()
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right)
}
- overridePendingTransition方法需要在startAtivity方法或者是finish方法调用之后立即执行
- 参数enterAnim表示的是从Activity a跳转到Activity b,进入b时的动画效果
- 参数exitAnim表示的是从Activity a跳转到Activity b,离开a时的动过效果
方式二
使用style的方式定义Activity的切换动画
<!-- 主题样式 -->
<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/colorAccent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:textSize">@dimen/text_middle_size</item>
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
</style>
<!--Activity进场。出场动画-->
<style name="AnimationActivity" parent="@android:style/Animation.Activity">
<!--用于设置打开新的Activity并进入新的Activity展示的动画-->
<item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
<!--用于设置打开新的Activity并销毁之前的Activity展示的动画-->
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<!--用于设置关闭当前Activity进入上一个Activity展示的动画-->
<item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
<!--用于设置关闭当前Activity时展示的动画-->
<item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>
<!--res/anim/slide_in_left-->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="top"
android:duration="300">
<translate
android:fromXDelta="-100%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0"/>
</set>
<!--res/anim/slide_in_right-->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:zAdjustment="top">
<translate
android:fromXDelta="100%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0.0"/>
</set>
<!--res/anim/slide_out_left-->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="top"
android:duration="300">
<translate
android:fromXDelta="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="-100%p"/>
</set>
<!--res/anim/slide_out_right-->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:zAdjustment="top">
<translate
android:fromXDelta="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="100%p"/>
</set>