157 votes

Désactiver l'animation de l'activité lors du lancement d'une nouvelle activité ?

J'ai une activité qui lance une autre activité, via un clic sur un bouton. Par défaut, sur les versions les plus récentes d'Android, le système d'exploitation anime la nouvelle activité en la faisant glisser de droite à gauche.

Existe-t-il un moyen de désactiver cette animation ? Je veux simplement que la nouvelle activité apparaisse sans aucune sorte d'animation.

205voto

Mattias Points 1106

El FLAG_ACTIVITY_NO_ANIMATION fonctionne bien pour désactiver l'animation au démarrage des activités.

Pour désactiver l'animation similaire qui est déclenchée lorsque l'on appelle finish() sur une activité, c'est-à-dire que l'animation glisse plutôt de droite à gauche, vous pouvez appeler overridePendingTransition(0, 0) après avoir appelé finish() et l'animation suivante sera exclue.

Cela fonctionne également sur l'animation si vous appelez overridePendingTransition(0, 0) après avoir appelé startActivity(...) .

9 votes

Notez que FLAG_ACTIVITY_NO_ANIMATION y overridePendingTransition sont toutes deux de niveau API 5+ uniquement.

2 votes

Cela n'aide pas lorsqu'on revient d'une activité en appuyant sur la touche Retour.

4 votes

Vous êtes le meilleur. overridePendingTransition(0, 0) -> est divin. Il ne surcharge que l'animation finish(), mais pas l'animation qui est déclenchée lors de la reprise de l'activité précédente.

183voto

Ewoks Points 3910

IMHO ce La réponse ici résout le problème de la manière la plus élégante

Le développeur doit créer un style ,

<style name="noAnimTheme" parent="android:Theme">
  <item name="android:windowAnimationStyle">@null</item>
</style>

puis dans le manifeste, définissez-le comme thème pour une activité ou une application entière.

<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>

Voila ! C'est facile et agréable

P.S. crédits à l'auteur original s'il vous plaît

2 votes

Il ne fonctionne pas pour Back, et il change l'aspect de la barre de titre (il la rend plus petite)...

0 votes

Êtes-vous sûr que vous n'avez pas ajouté d'autres propriétés dans le style, car personne d'autre n'a signalé cet "effet" que vous mentionnez

0 votes

À titre d'information, cela peut poser un problème dans une hiérarchie de vues où vous devez demander requestWindowFeature().

39voto

Siddharth Vyas Points 3421

Appliquer

startActivity(new Intent(FirstActivity.this,SecondActivity.class));

puis

overridePendingTransition(0, 0);

Cela arrêtera l'animation.

21voto

Précisez simplement Intent.FLAG_ACTIVITY_NO_ANIMATION lors du démarrage de l

16voto

cmcromance Points 668

Cela fonctionne pour moi lorsque je désactive l'animation de fin d'activité.

@Override
protected void onPause() {
    super.onPause();
    overridePendingTransition(0, 0);
}

0 votes

Cette solution est utile dans le cas suivant Intent(context, MyActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) startActivity(intent)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X