Activity进入和退出动画

    xiaoxiao2021-12-13  18

    Activity进入和退出动画

    Android系统5.0以下,activity进入动画是从中间向四周扩散,退出动画是从四周向中间聚拢,最后消失。有时候我们觉得这种效果不好,那么我们可以指定Activity的进入和退出动画

    方式一

    如果现在Activity1跳转到Activity2,在跳转的过程中我么可以指定Activity2的进入动画方式通过使用 overridePendingTransition(R.anim.activity_slide_enter_bottom, R.anim.activity_alpha_exit); 方法来实现,注意此方法写在StartActivity之后

    startActivity(new Intent(Activity1.this,Activity2.class)); //参数一:Activity2进入动画 参数二:Activity1退出动画 overridePendingTransition(R.anim.activity_slide_enter_bottom, R.anim.activity_alpha_exit);

    当点击返回键的时候,Activity2销毁的时候,也可以以指定Activity2退出的动画,通过使用 overridePendingTransition(R.anim.activity_alpha_enter, R.anim.activity_slide_exit_bottom);方法来实现,注意此方法写在finish()之后

    @Override public void finish() { super.finish(); //参数一:Activity1进入动画,参数二:Activity2退出动画 overridePendingTransition(R.anim.activity_alpha_enter, R.anim.activity_slide_exit_bottom); }

    接下来我们就来看看我们自定义的动画xml文件把

    1.在res文件夹下新建一个anim文件夹 2.在anim文件夹下新建activity_slide_enter_bottom.xml,activity_alpha_exit.xml,activity_alpha_enter.xml, activity_slide_exit_bottom.xml四个文件

    activity_slide_enter_bottom.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromYDelta="100%" android:toYDelta="0" /> <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>

    activity_slide_exit_bottom.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromYDelta="0" android:toYDelta="100%" /> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0.0" /> </set>

    activity_alpha_exit.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="3000" android:fromAlpha="1.0" android:toAlpha="0" /> </set>

    activity_alpha_enter.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>

    方式二

    1.在AndroidManifest.xml文件中设置Activity的样式

    <activity Android:name="com.zhiming.Activity2" android:theme="@style/ThemeActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

    2.在values文件夹下的themes.xml自定义Activity进入和退出动画主题、

    <?xml version="1.0" encoding="utf-8"?> <resources> <style name="ThemeActivity" parent="android:Theme.Light.NoTitleBar"> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> </style> </resources>

    3.在values文件夹下的styles.xml中自定义Activity进入和退出动画样式

    <!-- Activity进出入动画 --> <style name="AnimationActivity" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/activity_slide_enter_right</item> <item name="android:activityOpenExitAnimation">@anim/activity_slide_exit_left</item> <item name="android:activityCloseEnterAnimation">@anim/activity_slide_enter_left</item> <item name="android:activityCloseExitAnimation">@anim/activity_slide_exit_right</item> </style> activityOpenEnterAnimation Activity2进入动画 activityOpenExitAnimation Activity1退出动画 activityCloseEnterAnimation Activity2销毁的时候,Activity1进入的动画 activityCloseExitAnimation Activity2退出动画

    4.在res/anim 文件夹下新建activity_slide_enter_right.xml,activity_slide_exit_left.xml,activity_slide_enter_left.xml activity_slide_exit_right.xml文件

    activity_slide_enter_right.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="100%" android:toXDelta="0" > </translate> <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>

    activity_slide_exit_left.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="0" android:toXDelta="-100%" > </translate> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0" /> </set>

    activity_slide_enter_left.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="-100%" android:toXDelta="0" > </translate> <alpha android:duration="300" android:fromAlpha="0" android:toAlpha="1" /> </set>

    activity_slide_exit_right.xml代码如下

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="0" android:toXDelta="100%" > </translate> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0" /> </set>

    总结:相比于这两种方式,我更加推荐使用第二种方式,比较简单方便

    转载请注明原文地址: https://ju.6miu.com/read-950238.html

    最新回复(0)