studio - transiciones entre fragments android
¿Cómo realizar una animación de desvanecimiento en la transición de actividad? (4)
Estoy codificando un efecto de transición entre la actividad de mi logotipo y mi actividad Principal, pero tengo el problema de que antes de desaparecer la actividad vaya a la parte superior:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<alpha
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0" >
</alpha>
</set>
¿Cómo podría mejorar este código para obtener solo un efecto de desaparición?
Podrías crear tus propios archivos de animación .xml para desvanecer en una nueva Activity
y desvanecer la Activity
actual:
fade_in.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" />
fade_out.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:fillAfter="true"
android:duration="500" />
Úselo en un código como ese: (Dentro de su Actividad)
Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
El código anterior desvanecerá la Actividad actualmente activa y se desvanecerá en la Actividad recién iniciada.
ACTUALIZACIÓN: @Dan J señaló que el uso de las animaciones integradas de Android mejora el rendimiento , que de hecho parece ser el caso. Si desea usar las animaciones integradas, use:
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Aviso usando android.R
lugar de R
Solo volver a publicar la respuesta por oleynikd porque es simple y ordenado
Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(),
android.R.anim.fade_in, android.R.anim.fade_out).toBundle();
startActivity(intent, bundle);
también puede agregar animaciones en su actividad, en el método Crear como el siguiente por invalidarPendingTransition no funciona con algunos dispositivos móviles, o depende de la configuración del dispositivo ...
View view = findViewById(android.R.id.content);
Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in);
mLoadAnimation.setDuration(2000);
view.startAnimation(mLoadAnimation);
también puedes usar este código en tu archivo style.xml para que no necesites escribir nada más en tu actividad.java
<!-- 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/colorAccent</item>
<item name="android:windowAnimationStyle">@style/AppTheme.WindowTransition</item>
</style>
<!-- Setting window animation -->
<style name="AppTheme.WindowTransition">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>