2011-03-04 10 views
6

Me gustaría recrear una funcionalidad similar a un Swing GlassPane para poder mostrar animaciones mientras el usuario usa la aplicación "below" normalmente. No puedo simplemente crear un diseño separado y adjuntarlo a cada actividad ya que el estado de la animación se perdería al cambiar de actividad. ¿Hay alguna forma de mantener una vista persistente de todas las actividades de una aplicación de Android?Android: muestra una vista persistente de todas las actividades

Gracias.

Respuesta

1

No, no es así. Cada actividad se ejecuta en su propio hilo y, por diseño, se supone que puede ejecutarse de forma autónoma.

Pero puede persistir el estado de la animación en la base de datos o en las preferencias compartidas y comenzar de nuevo en la nueva actividad.

Lo que también puede hacer es usar un Spinner u otro control en lugar de actividades separadas. Entonces podrías tener una vista persistente.

+0

Sí, pensé en usar un cuadro de diálogo o similares, pero siempre tiene que estar unido a una actividad específica, por lo que se esconde cuando se cambia a otra actividad. – janin

+0

No sé si esto es cierto; eche un vistazo a la aplicación Zedge. No estoy seguro de cómo lo están haciendo, pero muestran una navegación persistente que no se intercambia al animar entre actividades. Si descubro cómo se hace, publicaré aquí. Editar: su nueva aplicación ya no parece hacer esto; toma mi palabra;) –

+0

¿Estás seguro de que están animando entre diferentes actividades? En muchos casos, un girador puede parecer que se usaron múltiples actividades. – Chris

0

¿por qué no pensar en una TabActivity?

hola! Hago esto antes con TabActivity, nunca con una única actividad, siempre con muchas actividades que comencé, obtengo sus ventanas y configuré como la ventana de decoración de mi ventana TabActivity ... no probé el código de abajo, ya que es una idea, pero tal vez más recientemente (cuando esté en casa) voy a escribir un ejemplo ...

Entonces, mi idea ... una TabActivity está compuesta por un TabWidget y un FrameLayout donde las ventanas de la actividad está asignado.

el TabWidget puede ser cualquier vista, por lo tanto, puede poner la vista animada aquí.

lo más difícil es el hecho de que, si comienzas una actividad desde el elemento secundario de TabActivity, entonces la nueva actividad estará encima de TabActivity. Para anular este comportamiento, TabActivity debe saber cuándo una actividad anidada desea iniciar otra actividad. Cuando esto sucede, TabActivity debe borrar su vista de decoración (con la actividad de la ventana anterior) y poner la vista de decoración de una nueva. Algo como esto:

sobre la actividad del niño, poner en marcha una nueva actividad cuando se hace clic en un botón: ... el detector de clics ...

((MyTabActivity)getParent()).createNewActivity("NewActivity", NewActivity.class); 

ahora, estamos diciendo que el que TabActivity tiene que empezar una nueva actividad, obtener la nueva vista de la actividad de decoración y poner ese punto de vista dentro de la vista decoración TabActivity ... así, el createNewActivity llevará a cabo algo como esto:

public void createNewActivity(String activityId, Class<?> class1) { 
    Intent intent = new Intent(getIntent().getAction()).setClass(MyTabActivity.this, class1); 
    Window wList = getLocalActivityManager().startActivity(activityId, intent); 
    getWindow().setContentView(wList.getDecorView()); 
} 

espero que me entiende.

Voy a escribir un ejemplo más adelante

Cuestiones relacionadas