Activity之间的切换动画
2012-07-27 11:06
323 查看
从android系统2.1以后,android新增了方法:overridePendingTransition(int enterAnim, int exitAnim),用于改变Activity之间的切换动画。
从样式里进行改变切换动画
这个主要是加在样式文件里进行更改,代码如下:
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
<style name="Theme.Test" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Test</item>
</style>
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
<style name="Animation.Activity.Test" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_close_exit</item>
<item name="android:taskOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:taskOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:taskCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:taskCloseExitAnimation">@anim/activity_close_exit</item>
<item name="android:taskToFrontEnterAnimation">@anim/activity_open_enter</item>
<item name="android:taskToFrontExitAnimation">@anim/activity_open_exit</item>
<item name="android:taskToBackEnterAnimation">@anim/activity_close_enter</item>
<item name="android:taskToBackExitAnimation">@anim/activity_close_exit</item>
</style>
只要这样进行配置,那边Activity之间的切换动画都可以进行自定义了
程序里动态的进行改变切换动画
如果程序中还有一些地方需要单独进行更改动画,则可以在程序里进行更改:
1. 由A跳到B的动画:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
startActivity(new Intent(A.this, B.class));
overridePendingTransition(inAnim, outAnim);
2. 由B回到A的动画:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
finish();
activity.overridePendingTransition(inAnim, outAnim);
加了Dialog样式的Activity的情况
如果在Activity的样式文件里,加入了下面的代码,则Activity就会出现Dailog的样式了:
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
<item name="android:windowIsTranslucent">true</item>
加入了这句话,按正常情况,应该不会再执行你设置的Activity的切换动画,但有时也会执行Activity之间的切入动画(有可能在程序第一次启动时),所以最好在代码里也加上overridePendingTransition()方法,进行动态进行设置。
总结:Activity之间的动画,是拿整个界面执行动画(包括通知栏),所以如果你执行向下切换动画,会看到白色的状态栏,这个我没有找到解决办法。
从样式里进行改变切换动画
这个主要是加在样式文件里进行更改,代码如下:
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
<style name="Theme.Test" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Test</item>
</style>
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
<style name="Animation.Activity.Test" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_close_exit</item>
<item name="android:taskOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:taskOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:taskCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:taskCloseExitAnimation">@anim/activity_close_exit</item>
<item name="android:taskToFrontEnterAnimation">@anim/activity_open_enter</item>
<item name="android:taskToFrontExitAnimation">@anim/activity_open_exit</item>
<item name="android:taskToBackEnterAnimation">@anim/activity_close_enter</item>
<item name="android:taskToBackExitAnimation">@anim/activity_close_exit</item>
</style>
只要这样进行配置,那边Activity之间的切换动画都可以进行自定义了
程序里动态的进行改变切换动画
如果程序中还有一些地方需要单独进行更改动画,则可以在程序里进行更改:
1. 由A跳到B的动画:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
startActivity(new Intent(A.this, B.class));
overridePendingTransition(inAnim, outAnim);
2. 由B回到A的动画:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
finish();
activity.overridePendingTransition(inAnim, outAnim);
加了Dialog样式的Activity的情况
如果在Activity的样式文件里,加入了下面的代码,则Activity就会出现Dailog的样式了:
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/002681544ca1ab71cb1c938689439b09.png)
<item name="android:windowIsTranslucent">true</item>
加入了这句话,按正常情况,应该不会再执行你设置的Activity的切换动画,但有时也会执行Activity之间的切入动画(有可能在程序第一次启动时),所以最好在代码里也加上overridePendingTransition()方法,进行动态进行设置。
总结:Activity之间的动画,是拿整个界面执行动画(包括通知栏),所以如果你执行向下切换动画,会看到白色的状态栏,这个我没有找到解决办法。
相关文章推荐
- Activity之间切换使用系统内置动画
- Android 两个activity之间“平推”的动画切换效果
- 两个Activity之间的切换动画
- Activity之间的动画的切换
- activity之间切换动画一种简单方法
- 通过自定义theme来改变Activity之间切换动画
- Activity之间的切换动画设置
- View动画另一些使用场景--LayoutAnimation和Activity之间的切换效果
- Android 关于 Activity 之间的切换动画
- Android 关于 Activity 之间的切换动画
- Android—Activity之间的切换动画——overridePendingTransition(0, 0);
- activity 之间切换动画
- Activity之间动画的切换
- android动画-Activity之间切换动画
- android的 activity之间切换去除动画之原始activity不调用finish
- 安卓手机卫士学习笔记系列——两个Activity之间切换动画效果overridependingtransition的使用
- Activity之间切换的动画效果
- Android中Activity之间切换动画的修改
- activity之间切换的动画效果
- Android中的动画详解系列【4】——Activity之间切换动画