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

2021-09-03  本文已影响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自定义开闭动画。

上一篇下一篇

猜你喜欢

热点阅读