studio - android tag example
Fade en actividad de actividad anterior en Android (2)
Actualmente estoy trabajando en una aplicación para Android y tengo algunos problemas con mi actividad de bienvenida. Quiero que mi actividad principal desaparezca de mi actividad de bienvenida, no de una pantalla negra. Tanto mi splash como las actividades principales usan la misma imagen de fondo, así que si hago un combo fade_in / fade_out, parece extraño que el fondo se desvanezca un poco durante la transición.
La idea aquí es que tengo versiones de mi logo: normal y brillante. Quiero que mi actividad principal desaparezca, por lo que mi logotipo brillante sobre toma mi logotipo normal, lo que provoca un pequeño efecto de "encendido". El siguiente código se difumina desde una pantalla negra, lo cual no es ideal.
/**
* Pause Activity
*/
@Override
protected void onPause()
{
super.onPause();
finish();
overridePendingTransition(android.R.anim.fade_in, 0);
}
EDITAR:
Crear mi propia animación de fade_out para conservar el nivel alfa 1.0 (de 1.0 a 1.0) y agregar android:fillAfter="true"
a mi conjunto de animaciones de bienvenida solucionó el problema.
Lo recomendaría contra un crossfade clásico, pero más bien mostraría la nueva Actividad sin una animación y simplemente desvanecería la Actividad actual. Esto se ve y se siente mucho más limpio y resuelve algunos problemas menores en los que puede ver el lanzador / aplicación subyacente cuando abre la aplicación desde el fondo mientras se inicia la animación.
my_splash_fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="750"
android:fromAlpha="1.0"
android:interpolator="@android:interpolator/accelerate_cubic"
android:startOffset="250"
android:toAlpha="0.0"
android:zAdjustment="top" />
Estoy agregando un startOffset
aquí para darle un poco de startOffset
a la Actividad recién creada, ya que es bastante pesada.
MySplashActivity.java
...
startActivity( ... );
finish();
overridePendingTransition( 0, R.anim.screen_splash_fade_out );
Avance
Se trata del orden de las cosas. Aquí hay un ejemplo que se desvanece en la siguiente actividad después de 3 segundos:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//Create an intent that will start the main activity.
Intent mainIntent = new Intent(SplashActivity.this, MainMenuActivity.class);
SplashActivity.this.startActivity(mainIntent);
//Finish splash activity so user cant go back to it.
SplashActivity.this.finish();
//Apply splash exit (fade out) and main entry (fade in) animation transitions.
overridePendingTransition(R.anim.mainfadein, R.anim.splashfadeout);
}
}, 3000);
Tenga en cuenta que aquí hay dos animaciones que aparecen y desaparecen.
mainfadein.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="700" />
splashfadeout.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="700" />