Activity 设置切换动画
Posted 赤耳A狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity 设置切换动画相关的知识,希望对你有一定的参考价值。
设置Activity的切换动画,有两种方式:
1.使用overridePendingTransition(新Activity进入动画, 旧Activity退出动画),需要紧接在startActivity 和finish()后。
2.在manifest中配置Activity的theme。
下面着重说明第二种情况:
[html] view plain copy
- <style name="ThemeActivity" parent="AppBaseTheme">
- <item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>
- </style>
- <style name="activityAnimatStyle" parent="@android:style/Animation.Activity">
- <!-- 新Activity 进入 -->
- <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
- <!-- 旧Activity退出 -->
- <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
- <!-- 新Activity退出 -->
- <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>
- <!-- 旧Activity进入 -->
- <item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>
- </style>
现在有3个Activity:A、B、C:
配置B的
[html] view plain copy- android:theme="@style/ThemeActivity"
若从B启动C,然后从C回退到B,此时才会将Android:activityCloseExitAnimation作用在C,将android:activityCloseEnterAnimation作用在B。
所以在使用manifest配置的时候,需要注意显示的target 所配置的属性,就如同overridePendingTransition一样。所以这四个属性决定的是【显示】当前Activity的时候,他的动画和与之关联的动画。
我们可以在application 节点中配置theme,那么所有的Activity的进出动画都是一致的,如果要单独配置两个Activity的交互动画,可以如下配置:
A-->B
在A的theme中,只用声明:
[html] view plain copy
- <!-- 新Activity退出 -->
- <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>
- <!-- 旧Activity进入 -->
- <item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>
在B的theme中,只声明:
[html] view plain copy
- <!-- 新Activity 进入 -->
- <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
- <!-- 旧Activity退出 -->
- <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
那么从A启动B时,会执行B声明的动画,此时要显示的是B,B是主体,当从B回退到A的时候,会执行A声明的动画,此时A是主体。
此时应该很清楚这四个属性作用的时机了吧。
这里还有一点要注意,如果使用了support包,theme的parent需要继承自Theme.AppCompat ,否则会报错。
如下
[html] view plain copy
- <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
- </style>
- <!-- Application theme. -->
- <style name="AppTheme" parent="AppBaseTheme">
- <!-- All customizations that are NOT specific to a particular API-level can go here. -->
- </style>
- <style name="ThemeActivity" parent="AppBaseTheme">
- <item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>
- </style>
- <style name="activityAnimatStyle" parent="@android:style/Animation.Activity">
- <!-- 新Activity 进入 -->
- <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
- <!-- 旧Activity退出 -->
- <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
- <!-- 新Activity退出 -->
- <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>
- <!-- 旧Activity进入 -->
以上是关于Activity 设置切换动画的主要内容,如果未能解决你的问题,请参考以下文章