两种方式:
- 在activity的自定义主题中定义切换方式;
- overridePendingTransition()方法
自定义主题:
在项目的res/values/styles.xml中添加样式
1 2 3 | <style name= "Activity.Theme" parent= "@android :style/Theme.NoTitleBar" >
<item name= "android:windowAnimationStyle" > @style /anim_activity</item>
</style>
|
1 2 3 4 5 6 | <style name= "anim_activity" parent= "@android :style/Animation.Activity" >
<item name= "android:activityOpenEnterAnimation" > @anim /activity_open_in_anim</item>
<item name= "android:activityOpenExitAnimation" > @anim /activity_open_out_anim</item>
<item name= "android:activityCloseEnterAnimation" > @anim /activity_close_in_anim</item>
<item name= "android:activityCloseExitAnimation" > @anim /activity_close_out_anim</item>
</style>
|
1 2 3 4 | 现在假设有两个Activity, A 和 B。 在A中可以启动B. 同时,A,B的theme属性均设置为上面定义的属性。那么,以上动画的发生时机如下:
( 1 )当A启动B时,A退出,B进入,A退出时的动画名称为android:activityOpenExitAnimation,动画文件为
R.anim.activity_open_out_anim. B进入时的动画名称为android:activityOpenEnterAnimation, 动画文件为R.anim.activity_open_in_anim.
( 2 )当B结束时,B退出,A进入。B退出的动画名称为android:activityCloseExitAnimation, 动画文件为R.anim.activity_close_out_anim.<br> A进入时的动画名称为android:activityCloseEnterAnimation, 动画文件为R.anim.activity_close_in_anim.
|
1 | 关于动画anim的具体写法可以参考:http: //my.oschina.net/u/1376187/blog/263331
|
overridePendingTransition()方法
1 2 3 4 5 | public void overridePendingTransition ( int enterAnim, int exitAnim)
其中:
enterAnim 定义Activity进入屏幕时的动画
exitAnim 定义Activity退出屏幕时的动画
overridePendingTransition 方法必须在startActivity()或者 finish()方法的后面。
|
1 2 3 4 | Intent intent= new Intent(PathButtonActivity. this ,MainActivity. class );
startActivity(intent);
//第一个参数为进入的目标activity动画效果,第二个参数为退出的activity动画
overridePendingTransition(R.anim.fade, R.anim.hold);
|
另:在broadcastReceiver或Service中启动Activity的时候,就在需要启动的那个activity的onCreate()方法中调用 overridePendingTransition()方法
参考:
http://blog.csdn.net/djun100/article/details/14525759
http://my.oschina.net/u/1376187/blog/263331
http://www./infodetail-821616.html
|