美文网首页
通过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