Skip to content

Activity过场动画效果

Activity切换的时候可以指定一些过场动画。 例如指定入场和退场的滑动方向。

我们先定义一些动画xml在drawable目录中

enter_from_left_to_right.xml,从左到右入场

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

可以看出x轴方向上的动画使用的是fromXDeltatoXDelta属性。

enter_from_right_to_left.xml,右到左入场

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

exit_to_left.xml,从左边退场

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

exit_to_right.xml,从右边退场

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

然后在styles.xml中定义使用的动画效果。

    <style name="AppMainTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowAnimationStyle">@style/DefActivityAnimation</item>
    </style>

    <!-- 指定过场动画 -->
    <style name="DefActivityAnimation">
        <item name="android:activityOpenExitAnimation">@anim/exit_to_left</item>
        <item name="android:activityOpenEnterAnimation">@anim/enter_from_right_to_left</item>
        <item name="android:activityCloseExitAnimation">@anim/exit_to_right</item>
        <item name="android:activityCloseEnterAnimation">@anim/enter_from_left_to_right</item>
    </style>

参考