1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。
它包括两个部分:
一部分是第一个activity退出时的动画;
另外一部分时第二个activity进入时的动画;
在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。这个函数就是overridePendingTransition
这个函数有两个参数,一个参数是第一个activity进入时的动画,另外一个参数则是第二个activity退出时的动画。
这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意
1.它必需紧挨着startActivity()或者finish()函数之后调用"
2.它只在android2.0以及以上版本上适用
此链接帮助大家理解次方法:http://www.oschina.net/question/97118_34343
2 不过有时候overridePendingTransition 这个函数会不起作用,总结下,大概是以下三个方面的原因:
就个人经验而言,overridePendingTransition有时候不灵的,并且使用overridePendingTransition方法时必须将其放在finish()方法后面,建议你采用为activity设置主题的形式来为activity设置动画,我就经常采用这种方式,具体步骤如下:
1、在res/values/styles.xml文件下,创建一个activity进入退出的style动画效果,比如:
<!-- 窗口进入和退出动画都有 -->
<style name="ActivityInOutAnimation" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/push_left_in</item>
<item name="android:activityOpenExitAnimation">@anim/push_left_out</item>
<item name="android:activityCloseEnterAnimation">@anim/push_right_in</item>
<item name="android:activityCloseExitAnimation">@anim/push_right_out</item>
</style>
其中“android:activityOpenEnterAnimation、android:activityOpenExitAnimation、android:activityCloseEnterAnimation、android:activityCloseExitAnimation”为你为窗口设置的进入退出动画,其中后面的值为你自定义的动画效果,文件放在res/anim文件夹下。
2、在res/values/styles.xml文件下为activity自定义主题,并为其“android:windowAnimationStyle”的属性设置为1中定义的style,看代码:
<style name="NormalTheme" parent="android:Theme.Holo.Light.NoActionBar">
<item name="android:windowAnimationStyle">@style/ActivityInOutAnimation</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
</style>
3、在AndroidManifest.xml中为你需要使用2中自定义主题的activity设置主题,比如:
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/NormalTheme"> </application>