Android 仿微信Activity进入退出动画(右进右出动画 )





目录(?)[+]



其实设置Activity动画的根本也就是设置View的动画,因为Activity有一个根的View叫DecorView。下面介绍两种设置Activity的动画

一.【全局配置Activity显示动画】

1.修改Activity Theme

   在styles.xml中输入以下代码

     



[html]  view plain copy




1. <style name="AnimationActivity" parent="@android:style/Animation.Activity">  
2. <item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>  
3. <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>  
4. <item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>  
5. <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>  
6. </style>



    然后在themes.xml中

    



[html]  view plain copy




1. <style name="ThemeActivity">  
2. <item name="android:windowAnimationStyle">@style/AnimationActivity</item>  
3. <item name="android:windowNoTitle">true</item>  
4. </style>

   在AndroidMainfest.xml中为Activity指定theme

2.使用代码设定

   通过调用overridePendingTransition() 可以实时修改Activity的切换动画。但需注意的是:该函数必须在调用startActivity()或者finish()后立即调用,且只有效一次。



下面举例说明。


Android退出应用动画 退出应用动画效果_xml

      

Android退出应用动画 退出应用动画效果_android_02

AndroidManifest.xml 注意application节点 的android:theme属性


Android退出应用动画 退出应用动画效果_android_03


[html]  view plain copy


1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
2. package="com.example.activityanimationdemo"  
3. android:versionCode="1"  
4. android:versionName="1.0" >  
5.   
6. <uses-sdk  
7. android:minSdkVersion="8"  
8. android:targetSdkVersion="15" />  
9.   
10. <application  
11. android:icon="@drawable/ic_launcher"  
12. android:label="@string/app_name"  
13. android:theme="@style/AppTheme" >  
14. <activity  
15. android:name=".OneActivity"  
16. android:label="@string/title_activity_main" >  
17. <intent-filter>  
18. <action android:name="android.intent.action.MAIN" />  
19.   
20. <category android:name="android.intent.category.LAUNCHER" />  
21. </intent-filter>  
22. </activity>  
23. <activity android:name=".TwoActivity" >  
24. </activity>  
25. <activity android:name=".ThreeActivity" >  
26. </activity>  
27. </application>  
28.   
29. </manifest>

看这里,主要的部分:styles.xml 


[java]  view plain copy


1. <resources xmlns:android="http://schemas.android.com/apk/res/android">  
2.   
3. "AppTheme" parent="@android:style/Theme">  
4.   
5.         <!-- 设置没有标题 -->  
6. "android:windowNoTitle">true</item>  
7.         <!-- 设置activity切换动画 -->  
8. "android:windowAnimationStyle">@style/activityAnimation</item>  
9.     </style>  
10.     <!-- animation 样式 -->  
11. "activityAnimation" parent="@android:style/Animation">  
12. "android:activityOpenEnterAnimation">@anim/slide_right_in</item>  
13. "android:activityOpenExitAnimation">@anim/slide_left_out</item>  
14. "android:activityCloseEnterAnimation">@anim/slide_left_in</item>  
15. "android:activityCloseExitAnimation">@anim/slide_right_out</item>  
16.     </style>  
17.   
18. </resources>


slide_left_in.xml


[html]  view plain copy


1. <?xml version="1.0" encoding="utf-8"?>  
2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
3.   
4. <translate  
5. android:duration="200"  
6. android:fromXDelta="-100.0%p"  
7. android:toXDelta="0.0" />  
8.   
9. </set>

slide_left_out.xml


[html]  view plain copy



    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.   
    4. <translate  
    5. android:duration="200"  
    6. android:fromXDelta="0.0"  
    7. android:toXDelta="-100.0%p" />  
    8.   
    9. </set>



    slide_right_in.xml


    [html]  view plain copy



    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.   
    4. <translate  
    5. android:duration="200"  
    6. android:fromXDelta="100.0%p"  
    7. android:toXDelta="0.0" />  
    8.   
    9. </set>



    slide_right_out.xml


    [html]  view plain copy


    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.   
    4. <translate  
    5. android:duration="200"  
    6. android:fromXDelta="0.0"  
    7. android:toXDelta="100.0%p" />  
    8.   
    9. </set>

    Activity 代码,很简单,就是startactivity而已不需要什么特别的

    [java]  view plain copy


    1. package com.example.activityanimationdemo;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.view.View;  
    7.   
    8. /**
    9.  * 
    10.  * @fileName OneActivity.java
    11.  * @author naibo-liao
    12.  * @CreateTime 2013-5-20 上午11:55:04
    13.  */  
    14. public class OneActivity extends Activity {  
    15.   
    16. public void onCreate(Bundle savedInstanceState) {  
    17. super.onCreate(savedInstanceState);  
    18.         setContentView(R.layout.layout_one);  
    19. new View.OnClickListener() {  
    20. @Override  
    21. public void onClick(View v) {  
    22. new Intent(OneActivity.this, TwoActivity.class));  
    23.             }  
    24.         });  
    25. // 返回事件  
    26.         findViewById(R.id.btn_exit).setOnClickListener(  
    27. new View.OnClickListener() {  
    28. @Override  
    29. public void onClick(View v) {  
    30.                         finish();  
    31.                     }  
    32.                 });  
    33.     }  
    34. }

    上一张工程图

    Android退出应用动画 退出应用动画效果_Android 动画_04

    二.【单独配置Activity显示动画】

    参考代码:

    eoe移动开发者社区的客户端源代码 

    下载地址:http://www.okbase.net/file/item/25706

    如若感觉上面代码太复杂,我自己写了个demo,有需要的同学可以下载参考。这个demo也是Activity+Fragment框架的,或许你能用上哦!


    Android退出应用动画 退出应用动画效果_Android退出应用动画_05




    其实设置Activity动画的根本也就是设置View的动画,因为Activity有一个根的View叫DecorView。下面介绍两种设置Activity的动画

    一.【全局配置Activity显示动画】

    1.修改Activity Theme

       在styles.xml中输入以下代码

         


    [html]  view plain copy



    1. <style name="AnimationActivity" parent="@android:style/Animation.Activity">  
    2. <item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>  
    3. <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>  
    4. <item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>  
    5. <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>  
    6. </style>


        然后在themes.xml中

        


    [html]  view plain copy


    1. <style name="ThemeActivity">  
    2. <item name="android:windowAnimationStyle">@style/AnimationActivity</item>  
    3. <item name="android:windowNoTitle">true</item>  
    4. </style>


       在AndroidMainfest.xml中为Activity指定theme

    2.使用代码设定

       通过调用overridePendingTransition() 可以实时修改Activity的切换动画。但需注意的是:该函数必须在调用startActivity()或者finish()后立即调用,且只有效一次。


    下面举例说明。


    Android退出应用动画 退出应用动画效果_xml

          

    Android退出应用动画 退出应用动画效果_android_02

    AndroidManifest.xml 注意application节点 的android:theme属性


    Android退出应用动画 退出应用动画效果_android_03


    [html]  view plain copy


    1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    2. package="com.example.activityanimationdemo"  
    3. android:versionCode="1"  
    4. android:versionName="1.0" >  
    5.   
    6. <uses-sdk  
    7. android:minSdkVersion="8"  
    8. android:targetSdkVersion="15" />  
    9.   
    10. <application  
    11. android:icon="@drawable/ic_launcher"  
    12. android:label="@string/app_name"  
    13. android:theme="@style/AppTheme" >  
    14. <activity  
    15. android:name=".OneActivity"  
    16. android:label="@string/title_activity_main" >  
    17. <intent-filter>  
    18. <action android:name="android.intent.action.MAIN" />  
    19.   
    20. <category android:name="android.intent.category.LAUNCHER" />  
    21. </intent-filter>  
    22. </activity>  
    23. <activity android:name=".TwoActivity" >  
    24. </activity>  
    25. <activity android:name=".ThreeActivity" >  
    26. </activity>  
    27. </application>  
    28.   
    29. </manifest>


    看这里,主要的部分:styles.xml 


    [java]  view plain copy



      1. <resources xmlns:android="http://schemas.android.com/apk/res/android">  
      2.   
      3. "AppTheme" parent="@android:style/Theme">  
      4.   
      5.         <!-- 设置没有标题 -->  
      6. "android:windowNoTitle">true</item>  
      7.         <!-- 设置activity切换动画 -->  
      8. "android:windowAnimationStyle">@style/activityAnimation</item>  
      9.     </style>  
      10.     <!-- animation 样式 -->  
      11. "activityAnimation" parent="@android:style/Animation">  
      12. "android:activityOpenEnterAnimation">@anim/slide_right_in</item>  
      13. "android:activityOpenExitAnimation">@anim/slide_left_out</item>  
      14. "android:activityCloseEnterAnimation">@anim/slide_left_in</item>  
      15. "android:activityCloseExitAnimation">@anim/slide_right_out</item>  
      16.     </style>  
      17.   
      18. </resources>


      slide_left_in.xml


      [html]  view plain copy



      1. <?xml version="1.0" encoding="utf-8"?>  
      2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
      3.   
      4. <translate  
      5. android:duration="200"  
      6. android:fromXDelta="-100.0%p"  
      7. android:toXDelta="0.0" />  
      8.   
      9. </set>


      slide_left_out.xml


      [html]  view plain copy


      1. <?xml version="1.0" encoding="utf-8"?>  
      2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
      3.   
      4. <translate  
      5. android:duration="200"  
      6. android:fromXDelta="0.0"  
      7. android:toXDelta="-100.0%p" />  
      8.   
      9. </set>



      slide_right_in.xml


      [html]  view plain copy



      1. <?xml version="1.0" encoding="utf-8"?>  
      2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
      3.   
      4. <translate  
      5. android:duration="200"  
      6. android:fromXDelta="100.0%p"  
      7. android:toXDelta="0.0" />  
      8.   
      9. </set>



      slide_right_out.xml


      [html]  view plain copy


      1. <?xml version="1.0" encoding="utf-8"?>  
      2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
      3.   
      4. <translate  
      5. android:duration="200"  
      6. android:fromXDelta="0.0"  
      7. android:toXDelta="100.0%p" />  
      8.   
      9. </set>



      Activity 代码,很简单,就是startactivity而已不需要什么特别的

      [java]  view plain copy



      1. package com.example.activityanimationdemo;  
      2.   
      3. import android.app.Activity;  
      4. import android.content.Intent;  
      5. import android.os.Bundle;  
      6. import android.view.View;  
      7.   
      8. /**
      9.  * 
      10.  * @fileName OneActivity.java
      11.  * @author naibo-liao
      12.  * @CreateTime 2013-5-20 上午11:55:04
      13.  */  
      14. public class OneActivity extends Activity {  
      15.   
      16. public void onCreate(Bundle savedInstanceState) {  
      17. super.onCreate(savedInstanceState);  
      18.         setContentView(R.layout.layout_one);  
      19. new View.OnClickListener() {  
      20. @Override  
      21. public void onClick(View v) {  
      22. new Intent(OneActivity.this, TwoActivity.class));  
      23.             }  
      24.         });  
      25. // 返回事件  
      26.         findViewById(R.id.btn_exit).setOnClickListener(  
      27. new View.OnClickListener() {  
      28. @Override  
      29. public void onClick(View v) {  
      30.                         finish();  
      31.                     }  
      32.                 });  
      33.     }  
      34. }


      上一张工程图

      Android退出应用动画 退出应用动画效果_Android 动画_04

      二.【单独配置Activity显示动画】

      参考代码:

      eoe移动开发者社区的客户端源代码 

      下载地址:http://www.okbase.net/file/item/25706

      如若感觉上面代码太复杂,我自己写了个demo,有需要的同学可以下载参考。这个demo也是Activity+Fragment框架的,或许你能用上哦!


      Android退出应用动画 退出应用动画效果_Android退出应用动画_05