Android – Comment animer une transition d’activité lorsque vous appuyez sur le bouton Retour par défaut

Dans mon activité, j’ai un bouton avec l’auditeur de clics suivant qui fonctionne très bien:

final ImageButton startOverButton = (ImageButton) findViewById(R.id.start_over_button); startOverButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(final View v) { finish();//go back to the previous Activity overridePendingTransition(R.anim.comming_in, R.anim.comming_out); } }); 

Il anime le retour à l’activité précédente comme je le souhaite. Cependant, lorsque l’utilisateur appuie sur le bouton Retour par défaut d’Android, l’animation n’est pas déclenchée. Ma question est la suivante: où dois-je mettre le code d’animation overridePendingTransition (R.anim.comming_in, R.anim.comming_out); afin que cette animation soit déclenchée à la fois lorsque l’utilisateur clique sur mon bouton et sur le bouton de retour Android par défaut?

En tant qu’essai naïf, j’ai essayé de mettre la commande overridePendingTransition (R.anim.comming_in, R.anim.comming_out); ligne de code dans la méthode onDestroy () mais cela n’a pas fonctionné.

Merci d’avance!

peut-être que vous pouvez faire ce travail dans la méthode onBackPressed () dans l’activité.

 @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.comming_in, R.anim.comming_out); } 

En résumé, onBackPressed est une approche appropriée, mais plutôt que d’appeler finish (), je dirais qu’il vaut mieux appeler super.onBackPressed (), puis append overridePendingTransition, donc nous sums un peu plus cohérents avec les règles d’inheritance.

 @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.comming_in, R.anim.comming_out); } 

Même si le onBackPressed() est une bonne option, je suggère de remplacer la méthode finish() au cas où l’activité serait terminée d’une autre manière, comme une action de navigation ou toute autre action de vue qui “détruit” l’activité:

 @Override public void finish() { super.finish(); overridePendingTransition(0,0); } 

Nous devons prendre en compte que cette méthode sera déclenchée après avoir appuyé sur le bouton Retour, nous sums donc prêts à partir 🙂

Mise à jour : De plus, onBackPressed() pourrait onBackPressed() l’activité si nous utilisons des fragments, car nous ne voulons probablement pas surcharger les transitions chaque fois que vous appuyez sur l’arrière.

Si vous utilisez fragment, vous pouvez continuer comme ceci:

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.setCustomAnimations(R.anim.anim_slide_in_left, R.anim.anim_slide_out_left, R.anim.anim_slide_out_right, R.anim.anim_slide_in_right); transaction.replace(R.id.fragment_container, new YourClassFragment); transaction.addToBackStack(null); transaction.commit(); 

anim_slide_in_left

      

anim_slide_out_left

      

anim_slide_out_right

      

anim_slide_in_right