activity切换动画总结

来源:互联网 发布:网络流行文化的研究 编辑:程序博客网 时间:2024/06/14 14:15

转载请注明出处:http://blog.csdn.net/szyangzhen/article/details/47357237

今天没事总结了一下activity切换动画相关知识,包括淡入淡出动画,左滑入右滑出,顶部滑入底部滑出等比较简单的动画,现在记录如下

activity淡入动画,放在文件act_switch_fade_in.xml中

<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="@integer/animation_duration"    android:fromAlpha="0.0"    android:interpolator="@android:anim/accelerate_interpolator"    android:toAlpha="1.0" />

activity淡出动画,放在act_switch_fade_out.xml中

<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="@integer/animation_duration"    android:fromAlpha="1.0"    android:interpolator="@android:anim/accelerate_interpolator"    android:toAlpha="0.0" />

activity底部滑入动画,放在act_switch_translate_bottom2screen.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromYDelta="100%"     android:toYDelta="0%"    android:duration="@integer/animation_duration"    ></translate>

activity顶部滑入动画,放在act_switch_translate_top2screen.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromYDelta="-100%"     android:toYDelta="0%"   android:duration="@integer/animation_duration"    ></translate>

activity左边滑入动画,放在act_switch_translate_left2screen.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="-100%"     android:toXDelta="0%"    android:duration="@integer/animation_duration"    ></translate>

activity右边滑入动画,放在act_switch_translate_right2screen.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="100%"     android:toXDelta="0%"    android:duration="@integer/animation_duration"    ></translate>

activity底部滑出动画(滑动到底部隐藏),放在act_switch_translate_screen2bottom.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromYDelta="0%"     android:toYDelta="100%"    android:duration="@integer/animation_duration"    ></translate>

activity顶部滑出动画(滑动到顶部隐藏),放在act_switch_translate_screen2top.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromYDelta="0%"     android:toYDelta="-100%"    android:duration="@integer/animation_duration"    ></translate>

activity左边滑出动画(滑动到左边隐藏),放在act_switch_translate_screen2left.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="0%"     android:toXDelta="-100%"    android:duration="@integer/animation_duration"    ></translate>

activity右边滑出动画(滑动到右边隐藏),放在act_switch_translate_screen2right.xml中

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="0%"     android:toXDelta="100%"    android:duration="@integer/animation_duration"    ></translate>

这些activity动画定义好了,还需要定义样式及主题,我就直接上代码了,里面都有注释

<?xml version="1.0" encoding="utf-8"?><resources>   <integer name="animation_duration">200</integer>    <!-- 淡入淡出动画 -->    <style name="activity_switch_fade" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/fade</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="fade" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_fade_in</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_fade_out</item>    </style>    <!-- 左边滑入左边滑出 -->    <style name="activity_switch_translate_left" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_left</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_left" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_left2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2left</item>    </style>    <!-- 右边滑入右边滑出 -->    <style name="activity_switch_translate_right" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_right</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_right" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_right2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2right</item>    </style>    <!-- 顶部滑入顶部滑出 -->    <style name="activity_switch_translate_top" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_top</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_top" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_top2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2top</item>    </style>    <!-- 底部滑入底部滑出 -->    <style name="activity_switch_translate_bottom" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_bottom</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_bottom" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_bottom2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2bottom</item>    </style>    <!-- 顶部滑入底部滑出 -->    <style name="activity_switch_translate_top_bottom" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_top_bottom</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_top_bottom" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_top2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_translate_screen2bottom</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_translate_bottom2screen</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2top</item>    </style>    <!-- 底部滑入顶部滑出 -->    <style name="activity_switch_translate_bottom_top" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_bottom_top</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_bottom_top" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_bottom2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_translate_screen2top</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_translate_top2screen</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2bottom</item>    </style>    <!-- 左边滑入右边滑出 -->    <style name="activity_switch_translate_left_right" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_left_right</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_left_right" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_left2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_translate_screen2right</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_translate_right2screen</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2left</item>    </style>    <!-- 右边滑入左边滑出 -->    <style name="activity_switch_translate_right_left" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/translate_right_left</item>    </style>    <!--    第一个表示新的activity创建进入效果,    第2个表示activity还没有finish()下退出效果,    第3个表示上一个activity返回进入效果,    第4个表示的是activity finish()之后退出效果    比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,此时A执行第二个动画(android:activityOpenExitAnimation)    B执行第一个动画(android:activityOpenEnterAnimation)    如此此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)    B执行动画4(android:activityCloseExitAnimation)    -->    <style name="translate_right_left" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_translate_right2screen</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_translate_screen2left</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_translate_left2screen</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_translate_screen2right</item>    </style></resources>

这个文件里定义了各种activity切换动画主题,大家需要运用哪种切换动画直接运用主题到appliation就行了,即在Manifest.xml文件里的application标签加上这么一个属性(比如想实现activity从顶部滑入底部滑出,应如下设置)

android:theme="@style/activity_switch_translate_top_bottom"

大家可以下载试下效果,下载后解压有一个anim文件夹入在res下即可,还有一个xml文件,activity_switch_anim.xml文件需要放在values文件夹下

源码下载

0 0