美文网首页
通过Style方式指定Activity的转场动画

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

作者: 小智在不在 | 来源:发表于2021-08-27 11:52 被阅读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>
    

    相关文章

      网友评论

          本文标题:通过Style方式指定Activity的转场动画

          本文链接:https://www.haomeiwen.com/subject/emkmiltx.html