活动退出animation在Android 4.0上无法正常工作

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

 @style/down_up_animation   @anim/slide_in_top @anim/hold @anim/hold @anim/slide_out_bottom  

在清单中:

  

目标是使活动内容在开始时向下滑动,在退出时向上滑动。

animation在2.3上运行良好。 但是,在4.0上,退出animation(向上滑动)不起作用。 animation的作用是关闭从此活动中产生的活动。 在我的例子中,我想用文章列表来animation关闭活动,而不是关闭文章细节有滑动animation。

我想我可以尝试将结束animation添加到生成我想要animation的活动的活动中,但它实际上产生了应该具有不同animation的活动。 我也找不到有关此文档中 2.3和4.0差异的任何信息。

如何让我的animation在4.0上运行?

Related of "活动退出animation在Android 4.0上无法正常工作"

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

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

我想补充一点这个答案; 覆盖animation解决方案工作正常,但您可能不想对animation进行硬编码。 如同平台的其他版本一样,从清单中获取它们会很好..所以….

在您的活动中添加几个成员字段,以保存附加到您的活动的animation的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(); 

然后,无论你的活动在哪里完成/应该应用animation包括……

 overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation); 

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

我也对这个问题感到困惑。 但幸运的是不久之后我find了答案。 您应该检查animation文件的根元素是否为“Set”。 如果不是,你应该用“Set”元素包装它,然后ActivityCloseAnimation属性可以正常工作。 我试过了。 希望它可以帮到你。

你看看这里使用overridePendingTransitionwindowEnterAnimation / windowExitAnimation为你工作