Почему моя анимация близкого действия не работает на Android 4.0 (ICS)

Я создал тему с пользовательской анимацией (слайд и слайд вниз). Анимация отлично работает на старых версиях Android. Однако, когда я пробовал ее на Android 4.0 (ICS), анимация закрытия не работает. Только слайд-анимация отлично работает на ICS.

Вот моя тема, которую я использую для анимации:

<style name="myTheme" parent="android:Theme.Black"> <item name="android:windowTitleSize">45dip</item> <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> <item name="android:windowAnimationStyle">@style/myTheme.Window</item> </style> <style name="myTheme.Window" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/push_up_in_no_alpha</item> <item name="android:activityOpenExitAnimation">@anim/no_anim</item> <item name="android:activityCloseEnterAnimation">@anim/no_anim</item> <item name="android:activityCloseExitAnimation">@anim/push_down_out_no_alpha</item> </style> 

И вот push_down_out_no_alpha.xml :

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="@android:integer/config_longAnimTime"/> </set> 

Когда я устанавливаю анимацию в коде, она также отлично работает на ICS, но почему бы не как тему?

  this.overridePendingTransition(R.anim.no_anim,R.anim.push_down_out_no_alpha); 

Кто-нибудь знает, почему он не работает на Android 4.0 (ICS)?

Задание анимации из манифеста, как представляется, нарушено в ICS 🙁 Решение для переопределения анимации отлично работает, но вы, вероятно, не хотите жестко кодировать анимации. Было бы неплохо получить их из манифеста, как и для других Версии платформы .. так ….

Добавьте несколько полей-членов в свою активность, чтобы удерживать идентификаторы анимаций, связанных с вашей деятельностью.

 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); 

И ваши действия должны правильно оценивать анимации, которые вы задали в теме / стиле, связанной с действиями в вашем манифесте.

Я также пытался, но не работал здесь. Не знаю, в чем проблема, но this.overridePendingTransition(R.anim.no_anim,R.anim.push_down_out_no_alpha); Этот код работает нормально