通过Style方式指定Activity的转场动画

2021-08-27  本文已影响0人  小智在不在

在A,B两个Activity中转场时,我们以B为主Activity,也是说Style是指定在B中的,可以如下指定,B的Style文件中指定动画Style:

<!-- B Activity的Style -->
<style name="AppTheme.Launcher" parent="xxx.xxx">
        <!--指定 B Activity的转场动画 -->
        <item name="android:windowAnimationStyle">@style/AppTheme.CustomActivityAnim</item>
 </style>

<!--指定的转场动画 -->
<style name="AppTheme.CustomActivityAnim" parent="@android:style/Animation.Activity" mce_bogus="1">
        <!--    上一个Activity(A)退出的动画    -->
        <item name="android:activityOpenExitAnimation">@anim/activity_open_exit_animation</item>
        <!--    本Activity(B)进入的动画   -->
        <item name="android:activityOpenEnterAnimation">@anim/activity_open_enter_animation</item>
        <!--    本Activity(B)退出动画    -->
        <item name="android:activityCloseExitAnimation">@anim/activity_close_exit_animation</item>
        <!--    下一个Activity(A)进入动画    -->
        <item name="android:activityCloseEnterAnimation">@anim/activity_close_enter_animation</item>
 </style>

四个动画指定的分别是两个场景:

  1. A打开B
    android:activityOpenExitAnimation指定A的退出动画
    android:activityOpenEnterAnimation指定B的进入动画

  2. B回退到A
    android:activityCloseExitAnimation指定B的退出动画
    android:activityCloseEnterAnimation指定A的进入动画

对于动画文件,和普通的动画文件一样,如:

activity_open_exit_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>
activity_open_enter_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="-100%p" android:toYDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>
activity_open_enter_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>
activity_close_enter_animation
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="100%p" android:toYDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>
上一篇下一篇

猜你喜欢

热点阅读