activity切换动画总结

转载请注明出处: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文件夹下

源码下载

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值