intent example change animations activity android android-activity transition

example - Transición de actividad en Android



transition activity android github (12)

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.

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


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

Crea un archivo llamado fadein.xml en res / anim

<?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="0.0" android:toAlpha="1.0" android:duration="2000" />

Crea un archivo llamado fadeout.xml en res / anim

<?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="0.0" android:duration="2000" />

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.


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

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" > <translate android:duration="5000" android:fromXDelta="100%" android:toXDelta="0%" /> <alpha android:duration="5000" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>

    slide_out_right.xml

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" > <translate android:duration="5000" android:fromXDelta="0%" android:toXDelta="-100%"/> <alpha android:duration="5000" android:fromAlpha="1.0" android:toAlpha="0.0" /> </set>

  2. efecto suave de derecha a izquierda

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

    animation_enter.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/> </set>

    animation_leave.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700" /> </set>

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


EN GALAXY Dispositivos:

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


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 compilar para el objetivo (1.5 o superior) usando las animaciones ordinarias (o suyas) o tiene que compilar para el objetivo (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.




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.


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

<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item> </style> <style name="CustomActivityAnimation" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item> <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item> <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item> <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item> </style>

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

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> </set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="@android:integer/config_mediumAnimTime"/> </set>

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> </set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_mediumAnimTime"/> </set>

Puedes descargar mi proyecto de muestra .

Eso es todo... :)


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

  1. Crea un estilo de animación en tu archivo styles.xml

<style name="WindowAnimationTransition"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style>

  1. Agregue este estilo al tema de su aplicación

<style name="AppBaseTheme" parent="Theme.Material.Light.DarkActionBar"> <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item> </style>

Eso es :)


Use ActivityCompat.startActivity () funciona API> 21.

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


crear res> anim> fadein.xml

<?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="0.0" android:toAlpha="1.0" android:duration="500" />

crear res> anim> fadeout.xml

<?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="0.0" android:duration="500" />

En res> valores> styles.xml

<style name="Fade"> <item name="android:windowEnterAnimation">@anim/fadein</item> <item name="android:windowExitAnimation">@anim/fadeout</item> </style>

En actividades en Crear ()

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