android - transiciones - ¿Cómo puedo agregar una animación al final de la actividad()?
efectos de entrada en power point (9)
Anulo la transición pendiente justo después de llamar a finish ();
En mi caso, lo hice para evitar transiciones.
finish();
Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);
El orden es importante :)
Estoy usando overridePendingTransition para cuando se crea mi actividad y eso funciona bien. Puedo ver que el fundido funciona muy bien, pero cuando intento animar el final de la actividad, sigo haciendo la diapositiva predeterminada de derecha a izquierda.
Primero intenté definir la animación de salida cuando comencé la actividad de la siguiente manera:
Intent myIntent = new Intent(a, SkdyAlert.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
a.startActivity(myIntent);
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout);
}
Luego traté de hacerlo cuando termine la actividad también
okBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout);
}
}
});
Pero ninguno de estos enfoques evitará que la diapositiva de "derecha a izquierda" se desplace. ¿Alguna idea sobre lo que estoy haciendo mal?
Busca hacerlo a través de un tema. Puede definir ingresar animaciones de salida para actividades o toda la aplicación
Esta pregunta ya ha respondido, pero la forma más eficiente de poner una animación al salir de una actividad es anulando el método "finish ()" de la actividad relacionada:
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}
Siguiendo la respuesta de @schwiz, aquí hay una anulación de animación para el tema Dialog incorporado, donde he definido las animaciones locales slide_up y slide_down. Mi actividad especifica el tema MyDialog para tener estas transiciones dentro y fuera.
<style name="Animation.MyDialog" parent="android:Animation.Dialog">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
<style name="Theme.MyDialog" parent="android:Theme.Dialog">
<item name="android:windowAnimationStyle">@style/Animation.MyDialog</item>
</style>
Solucioné este problema usando este tipo de enfoque:
para abrir con animación:
Intent newUser = new Intent(getBaseContext(), NewUserActivity.class);
startActivity(newUser);
overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
Para cerrar con animación:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.slide_out_right,R.anim.slide_in_right);
}
Sugeriría usar el método isFinishing () para configurar las animaciones en onPause en lugar de llamar a finish ()
@Override
protected void onPause() {
super.onPause();
if (isFinishing()){
overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out);
}
}
Use startActivityForResult para iniciar su actividad secundaria y en onActivityResult () de su actividad principal:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_YOUR_ACTIVITY) {
overridePendingTransition(R.anim.parent_appearing_anim, R.anim.child_dissmissing_anim);
}
super.onActivityResult(requestCode, resultCode, arg2);
}
finish();
overridePendingTransition(0, 0);
if (getEnterAnimation() > -1 && getExitAnimation() > -1) {
overridePendingTransition(getEnterAnimation(), getExitAnimation());
}
donde estos métodos devuelven animaciones de R.anim.YOUR_ANIMATION_XML
agregue este código en su onCreate () antes
setContentView()
y en su OnPause () antes
super.onPause()
intenté agregar este código antes / dentro de estos métodos pero la animación de salida nunca funcionó
startActivity()
finish()
onBackPressed()