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()后立即调用,且只有效一次。
下面举例说明。
AndroidManifest.xml 注意application节点 的android:theme属性
[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. }
上一张工程图
二.【单独配置Activity显示动画】
参考代码:
eoe移动开发者社区的客户端源代码
下载地址:http://www.okbase.net/file/item/25706
如若感觉上面代码太复杂,我自己写了个demo,有需要的同学可以下载参考。这个demo也是Activity+Fragment框架的,或许你能用上哦!
其实设置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()后立即调用,且只有效一次。
下面举例说明。
AndroidManifest.xml 注意application节点 的android:theme属性
[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. }
上一张工程图
二.【单独配置Activity显示动画】
参考代码:
eoe移动开发者社区的客户端源代码
下载地址:http://www.okbase.net/file/item/25706
如若感觉上面代码太复杂,我自己写了个demo,有需要的同学可以下载参考。这个demo也是Activity+Fragment框架的,或许你能用上哦!