2012-06-25 9 views
6

Pregunta bastante simple aquí, pero parece que no puedo encontrar a alguien que ya haya preguntado esto. Lo más probable es que no use las palabras clave correctas.Alternar entre actividades: No ocultar actividad anterior

En cualquier caso, aquí es mi escenario:

estoy lanzando una nueva actividad en la que muestro una vista web. He llamado overridePendingTransition para obtener la animación que quiero cuando cambio a la nueva actividad, que funciona bien (al menos, la parte de animación funciona bien). Sin embargo, hay un par de cosas que le quitan el efecto.

Lo que quiero es que la vista web se deslice sobre la actividad anterior, desde abajo, y cuando el usuario presiona hacia atrás, debe deslizarse hacia abajo fuera del sitio. La segunda parte de esto funciona como un amuleto, pero la primera parte no es exactamente lo que quiero.

Inmediatamente después de activar la nueva actividad, la anterior está oculta, y en su lugar está la negrura, por lo que parece que la vista web se desliza sobre la negrura. Me gustaría que deje la actividad anterior en segundo plano en lugar de ocultarla, por lo que la vista web se desliza sobre eso. es posible?

Gracias!

Respuesta

1

Crea tus archivos de recursos XML de animación de transición personalizados que logran el efecto deseado y llama a Activity.overridePendingTransition antes de comenzar la siguiente actividad.

+0

Tengo esos, simplemente no sé de una manera de decir en la animación de salida "Quédate quieto y mantente visible" – Droidmon

+3

Muy bien, esto es un poco tonto, pero acabo de crear un animación que básicamente no hace nada, y dura la misma cantidad de tiempo que la animación de la vista web. (Solo traduzco xDelta de 0% a 0%, lo que significa, obviamente, no va a ninguna parte, pero todavía se dibuja en el fondo en lugar de convertirlo en nada negro) – Droidmon

+1

Esto es lo que también hice, solo una transición de 0 a 0. Android es un poco raro jajaja – trapper

1

podría ser lento, pero ¿ha intentado utilizar un tema diferente para la actividad?

check this out.

+0

Intenté un montón de aquellos con setTheme, pero no vi nada diferente. Gracias por el enlace, puedo intentar crear un tema personalizado. – Droidmon

+0

¿qué hay de usar fragmentos en lugar de actividades? google sugiere usarlos de todos modos ... –

11

Vine aquí buscando lo mismo, pero las respuestas actuales no fueron de ayuda. ¡Espero que esto ayude, siendo cuatro meses después de que se hizo la pregunta!

En mi opinión, esto se debe a un error en la plataforma Android, ya que:

  • que sólo ocurre si el exitAnim es 0,
  • que sólo ocurre con elementos de 'traducir'. Los elementos 'alpha' (fade-in, fade-out) funcionan bien.

Aquí está mi solución:

@Override 
protected void onResume() { 
    overridePendingTransition(R.anim.mu_slide_in_left, R.anim.mu_no_anim); 
    super.onResume(); 
} 

@Override 
protected void onPause() { 
    overridePendingTransition(0, R.anim.mu_slide_out_right); 
    super.onPause(); 
} 

Dónde mu_no_anim.xml es

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:fromAlpha="1.0" android:toAlpha="1.0" android:duration="100000" /> 

Así que esto está obligando a la actividad de salida va a quedar visible especificando el mecanismo alfa fiable a desvanecerse desde alfa 1 a alfa 1 durante 100 segundos; en otras palabras, simplemente manténgala completamente visible.

La solución alternativa no es completamente perfecta. Por ejemplo, si se llama a su nueva actividad desde un cuadro de diálogo, el cuadro de diálogo se verá como si se descartara a medida que la actividad se desliza en su lugar, pero volverá luego de cerrar esa actividad.

1

En lugar de usar una animación de salida diferida, puede agregar una propiedad al tema de la actividad de entrada para hacer que la ventana sea translúcida, para que pueda ver la actividad anterior.

<style name="EnteringActivity.Theme" parent="@android:style/Theme.Holo.Light"> 
    [...] 
    <item name="android:windowIsTranslucent">true</item> 
    [...] 
</style> 

Nota: si va a crear una actividad de diálogo, también tendrá la siguiente propiedad en el tema de la actividad:

<item name="android:windowBackground">@color/transparent</item> 
1

había aparecerá un problema similar de conseguir una pantalla en negro en la transición deslizante de una actividad a otra usando overridependingtransition. y he seguido el camino de abajo y funcionó

1) creado un noanim.xml en la carpeta anim

<?xml version="1.0" encoding="utf-8"?> 

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

y se utiliza

overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim); 

el primer parámetro como mi animación original y el segundo parámetro que es la animación de salida como mi animación ficticia

Cuestiones relacionadas