android:activityOpenEnterAnimation 一个activity创建进入的效果
android:activityOpenExitAnimation 一个activity还没有finish()下退出效果, 比如有俩个activity A,B 首先启动A 然后再启动B 那么A还没有finish() 这A的退出效果
android:activityCloseEnterAnimation 表示上一个activity返回进入效果 比如有俩个activity A,B B退出后A进入的效果
activityCloseExitAnimation 表示的是activity finish()之后的效果 比如有俩个activity A,B B退出后会被finish() 那么B的退出效果在这定义
<style name="AppTheme" parent="@android:style/Theme">
<item name="android:windowAnimationStyle">@style/activityAnimation</item>
</style>
<item name="android:activityOpenEnterAnimation">@anim/slide_right_in</item>
<item name="android:activityOpenExitAnimation">@anim/slide_left_out</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_left_in</item>
<item name="android:activityCloseExitAnimation">@anim/slide_right_out</item>
这四个属性容易不好记,按照顺序我们简单的记忆口诀是“新进、旧出;旧进、新出”;
当新、旧两个activity都是用这个动画主题时,进入、退出动画是正常的。(这种情况一般都是我们在Application里面统一指定的所有activity的交互动画。)
一旦两者之中,所使用的动画主题不一致的时候,交互就出现问题了。
具体为:
旧activity没有、新activity有主题;进入动画用新的,退出动画用旧的 (退出动画“失效”)
旧activity有主题,新activity没有:进入动画用旧的, 退出动画用新的 (进入动画“失效”)
很多都是第二种情况,那么如何让退出动画产生效果呢,代码如下:
finish();
// 第一个参数是旧activity进入动画,第二个参数是当前activity退出动画 overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_bottom);
}