美文网首页
为单个Activity设置从底部出入的动画

为单个Activity设置从底部出入的动画

作者: 静水红阳 | 来源:发表于2021-09-03 10:12 被阅读0次

    前言

    目前Android APP在每个Activity打开和退出时有着默认的主题动画,一般情况下是默认的右进右出,有时候我们需要自定义个别Activity的独立打开和关闭动画,本文着重说明实现。

    主题样式说明

    Activity的默认的进出动画是定义在application的主题里的,当我们新建立一个工程时,工程会给我们默认配置了一个动画效果,在工程的AndroidManifest.xml文件的Application配置中,其设置项为android:theme

    样式的具体配置项可以在theme.xml文件中进行查看。

    设置独立Activity开闭动画

    对于单独的Activity而言,如果要更改其出入动画,更新Application的主题显然是不合适的,因为这会对工程内的其他Activity有影响,因此我们只能够采取覆盖的方式进行处理,即我们为Activity单独设置一个新的theme样式,包括有自定义的打开和关闭动画。

    1. 动画定义

    首先我们需要单独定义一个新的打开关闭动画样式,我们可以在resanim文件夹中定义进出的动画样式:

    进入动画bottom_enter.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="100%p"
            android:duration="200"/>
    </set>
    

    离开动画bottom_exit.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:toYDelta="100%p"
            android:duration="200"/>
    </set>
    

    2. 定义样式

    然后接下来需要自定义style,我们在res/values文件夹下style.xml或者theme.xml文件中定义如下样式:

        <style name="bottom_in_out_theme" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="android:windowAnimationStyle">@style/activity_bottom_in_out</item>
        </style>
    
        <!--初步设置activity进入和退出的动画-->
        <style name="activity_bottom_in_out" parent= "android:Animation.Activity">
            <item name="android:activityCloseExitAnimation">@anim/bottom_exit</item>
            <item name="android:activityCloseEnterAnimation">@anim/bottom_exit</item>
            <item name="android:activityOpenExitAnimation">@anim/bottom_enter</item>
            <item name="android:activityOpenEnterAnimation">@anim/bottom_enter</item>
        </style>
    </resources>
    

    这样我们就成功定义了自定义的Activity出入样式:bottom_in_out_theme

    3. Activity配置

    在完成了上述style之后,我们还需在AndroidManifest.xml中对Activity进行配置:

            <activity android:name=".TargetActivity"
                android:theme="@style/bottom_in_out_theme"/>
    

    经过上述几步,我们就能够成功的为Activity设置了从底部进入退出的动画了。

    无动画样式

    没有动画的主题样式

        <style name="Theme.notAnimation" parent="android:Theme.Light.NoTitleBar.Fullscreen">
            <item name="android:windowAnimationStyle">@style/notAnimation</item>
        </style>
    
        <style name="notAnimation">
            <item name="android:activityOpenEnterAnimation">@null</item>
            <item name="android:activityOpenExitAnimation">@null</item>
            <item name="android:activityCloseEnterAnimation">@null</item>
            <item name="android:activityCloseExitAnimation">@null</item>
            <item name="android:taskOpenEnterAnimation">@null</item>
            <item name="android:taskOpenExitAnimation">@null</item>
            <item name="android:taskCloseEnterAnimation">@null</item>
            <item name="android:taskCloseExitAnimation">@null</item>
            <item name="android:taskToFrontEnterAnimation">@null</item>
            <item name="android:taskToFrontExitAnimation">@null</item>
            <item name="android:taskToBackEnterAnimation">@null</item>
            <item name="android:taskToBackExitAnimation">@null</item>
        </style>
    

    总结

    Activity自定义开闭动画。

    相关文章

      网友评论

          本文标题:为单个Activity设置从底部出入的动画

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