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

来源:互联网 发布:手机淘宝降价通知 编辑:程序博客网 时间:2024/05/18 01:28

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

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

1.修改Activity Theme

   在styles.xml中输入以下代码

     

[html] view plaincopy
  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 plaincopy
  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()后立即调用,且只有效一次。


下面举例说明。

      

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



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

slide_left_in.xml

[html] view plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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.         findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {  
  20.             @Override  
  21.             public void onClick(View v) {  
  22.                 startActivity(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. }  

上一张工程图


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

参考代码:

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


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


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

http://download.csdn.net/detail/jdsjlzx/8448321




1 0
原创粉丝点击