android animation themes android-4.0

Por qué mi animación de actividad cercana no funciona en Android 4.0(ICS)



animation themes (2)

También lo intenté, pero no funciona aquí. No sé cuál es el problema sino this.overridePendingTransition(R.anim.no_anim,R.anim.push_down_out_no_alpha); este código está funcionando bien

Hice un tema con una animación personalizada (deslizar hacia arriba y deslizar hacia abajo). La animación funciona bien en las versiones anteriores de Android. Sin embargo, cuando lo pruebo en Android 4.0 (ICS), la animación de cierre no funciona. Solo la animación de deslizamiento funciona bien en ICS.

Aquí está mi tema que uso para la animación:

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

Y aquí está 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>

Cuando configuro una animación en código también funciona bien en ICS, pero ¿por qué no como tema?

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

¿Alguien sabe por qué no funciona en Android 4.0 (ICS)?


La especificación de animaciones del manifiesto parece estar rota en ICS :-( La solución de animación de anulación funciona bien, pero es probable que no desee codificar las animaciones. Sería bueno obtenerlas del manifiesto como lo haría para otras versiones de la plataforma ... así que ...

agregue un par de campos de miembros a su actividad para guardar los identificadores de las animaciones adjuntas a su actividad.

protected int activityCloseEnterAnimation; protected int activityCloseExitAnimation;

y en algún lugar de su 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();

luego, donde sea que termine tu actividad / debería aplicar animación, incluye ...

overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);

y sus actividades deben respetar correctamente las animaciones que establece en el tema / estilo adjunto a las actividades en su manifiesto.