Transición de actividad en Android

¿Cómo puedo definir la transición entre dos actividades para Android 1.5 y posterior? Me gustaría que una actividad se desvanezca.

Puede hacer esto con Activity.overridePendingTransition() . Puede definir animaciones de transición simples en un archivo de recursos XML. Un buen tutorial sobre esto se puede encontrar aquí .

Aquí está el código para hacer un buen desvanecimiento suave entre dos actividades.

Crea un archivo llamado fadein.xml en res / anim

   

Crea un archivo llamado fadeout.xml en res / anim

   

Si desea desvanecerse de la Actividad A a la Actividad B, coloque lo siguiente en el método onCreate para la Actividad B. Antes de que SetContentView funcione para mí.

 overridePendingTransition(R.anim.fadein, R.anim.fadeout); 

Si los desvanecimientos son demasiado lentos para usted, cambie android: duration en los archivos xml anteriores a algo más pequeño.

Una manera incluso más fácil de hacerlo es:

  1. Crea un estilo de animación en tu archivo styles.xml
  
  1. Agregue este estilo al tema de su aplicación
  

Eso es 🙂

Sí. Puede decirle al sistema operativo qué tipo de transición desea para su actividad.

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setWindowAnimations(ANIMATION); ... } 

Donde ANIMATION es un número entero que hace referencia a una animación incorporada en el sistema operativo.

Para obtener una lista de animaciones predeterminadas, consulte: http://developer.android.com/reference/android/R.anim.html

De hecho, fade_in y fade_out para API nivel 1 y superior.

crear res> anim> fadein.xml

   

crear res> anim> fadeout.xml

   

En res> valores> styles.xml

  

En actividades en Crear ()

 getWindow().getAttributes().windowAnimations = R.style.Fade; 

Aquí está el código para hacer un buen trabajo entre dos actividades.

  1. efecto suave de izquierda a derecha

    Crea un archivo llamado slide_in_right.xml y slide_out_right.xml en res / anim

    slide_in_right.xml

           

    slide_out_right.xml

          
  2. efecto suave de derecha a izquierda

    Crea un archivo llamado animation_enter.xml y animation_leave.xml en res / anim

    animation_enter.xml

         

    animation_leave.xml

         
  3. Navega de una actividad a la segunda Actividad

      Intent intent_next=new Intent(One_Activity.this,Second_Activity.class); overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right); startActivity(intent_next); finish(); 

    4.En evento de retroceso o Navegación de segunda actividad a una Actividad

      Intent home_intent = new Intent(Second_Activity.this, One_Activity.class); overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave); startActivity(home_intent); finish(); 

Sobreescribo mi animación de actividad predeterminada. Lo pruebo en api 15 que funciona sin problemas. Aquí está la solución que uso:

    

Crea una carpeta anim en la carpeta res y luego crea estos cuatro archivos de animación:

slide_in_right.xml

     

slide_out_left.xml

     

slide_in_left.xml

     

slide_out_right.xml

     

Puedes descargar mi proyecto de muestra .

Eso es todo… 🙂

No puede usar el reemplazo de PendingTransition en Android 1.5. overridePendingTransistion llegó a Android 2.0.

Si va a pasar por esto sin ningún error, tiene que comstackr para el objective (1.5 o superior) usando las animaciones ordinarias (o suyas) o tiene que comstackr para el objective (2.0 o superior) utilizando la opción Anular TransiciónPend.

Resumen: no puede usar la anulación de TransferenciaPend en Android 1.5 .

Aunque puede utilizar las animaciones integradas en el sistema operativo.

EN GALAXY Dispositivos:

Debes asegurarte de que no lo has apagado en el dispositivo usando la Configuración> Opciones de desarrollador:

two muppets

Use ActivityCompat.startActivity () funciona API> 21.

  ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionImage, EXTRA_IMAGE); ActivityCompat.startActivity(activity, intent, options.toBundle()); 

Antes de comenzar su intención:

 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle()); 

Esto le da Animación Predeterminada a su Transición de Actividad.

Algunas versiones de Android admiten transiciones de Activity personalizadas y otras no (dispositivos antiguos). Si desea usar transiciones personalizadas, es una buena práctica verificar si la Activity tiene el método overridePendingTransition() , ya que en versiones anteriores no es así.

Para saber si el método existe o no, se puede usar la API de reflexión. Aquí está el código simple que verificará y devolverá el método si existe:

 Method mOverridePendingTransition; try { mOverridePendingTransition = Activity.class.getMethod( "overridePendingTransition", new Class[] { Integer.TYPE, Integer.TYPE } ); /* success */ } catch (NoSuchMethodException nsme) { /* failure, this version of Android doesn't have this method */ } 

Y luego, podemos aplicar nuestra propia transición, es decir, usar este método si existe:

 if (UIConstants.mOverridePendingTransition != null) { try { UIConstants.mOverridePendingTransition.invoke(MainActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } 

Aquí, como ejemplo, se usaron animaciones simples de fundido de entrada y salida para la demostración de transición.

alejar la animación

 Intent i = new Intent(getApplicationContext(), LoginActivity.class); overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit); startActivity(i); finish(); 

zoom_enter

   

zoom_exit