Android 活动退出动画don';在安卓4.0上无法正常工作

Android 活动退出动画don';在安卓4.0上无法正常工作,android,animation,android-activity,Android,Animation,Android Activity,我有一个主题可以更改活动的打开/关闭/进入/退出动画: <style name="down_up_theme" parent="Theme.rtlfr"> <item name="android:windowAnimationStyle">@style/down_up_animation</item> </style> <style name="down_up_animation" parent="@android:style/An

我有一个主题可以更改活动的打开/关闭/进入/退出动画:

<style name="down_up_theme" parent="Theme.rtlfr">
    <item name="android:windowAnimationStyle">@style/down_up_animation</item>
</style>

<style name="down_up_animation" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_top</item>
    <item name="android:activityOpenExitAnimation">@anim/hold</item>
    <item name="android:activityCloseEnterAnimation">@anim/hold</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_out_bottom</item>
</style>

@样式/向下\向上\动画
@动画/幻灯片在顶部
@动画/等待
@动画/等待
@动画/滑出底部
在舱单上:

<activity android:name=".activity.ArticlesActivity"
        android:theme="@style/down_up_theme" />


如何使我的动画在4.0上工作?

我不确定为什么主题中的退出动画集在ICS+上不工作,但调用
overridePendingTransition()
似乎工作正常。为您执行此操作的最简单方法可能是在活动中覆盖
finish()

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}

我想对这个答案再补充一点;覆盖动画解决方案工作正常,但您可能不想硬编码动画。与平台的其他版本一样,从清单中获取它们也很好。。所以

向活动添加两个成员字段,以保存附加到活动的动画ID

protected int activityCloseEnterAnimation;
protected int activityCloseExitAnimation;
在你的onCreate中的某个地方

// Retrieve the animations set in the theme applied to this activity in the
// manifest..
TypedArray activityStyle = getTheme().obtainStyledAttributes(new int[] {android.R.attr.windowAnimationStyle});
int windowAnimationStyleResId = activityStyle.getResourceId(0, 0);      
activityStyle.recycle();

// Now retrieve the resource ids of the actual animations used in the animation style pointed to by 
// the window animation resource id.
activityStyle = getTheme().obtainStyledAttributes(windowAnimationStyleResId, new int[] {android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation});
activityCloseEnterAnimation = activityStyle.getResourceId(0, 0);
activityCloseExitAnimation = activityStyle.getResourceId(1, 0);
activityStyle.recycle();
然后,无论您的活动在何处完成/应应用动画,包括

overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);

并且您的活动应该正确地遵守您在清单中活动的主题/样式中设置的动画。

使用覆盖过渡windowEnterAnimation/windowExitAnimation应该对您有效。

我也被这个问题弄糊涂了。但幸运的是,不久之后我找到了答案。您应该检查动画文件的根元素是否为“Set”。如果不是,则应使用“Set”元素将其包装,然后ActivityCloseAnimation属性将正常工作。
我试过了。希望它能对您有所帮助。

我同意@Joe
overridePendingTransition()
在这里工作得很好,但我担心它为什么不能作为主题工作。我在三星Grand2设备kitkat上有动画问题,这个动画没有显示。请帮我找到解决方案。您在xml
android:interpolator中尝试过这个吗=“@android:anim/accelerate\u interpolator”android:shareInterpolator=“true”