Android - Comment arrêter l'animation entre les changements d'activité

j'ai plusieurs activités différentes dans mon application et je ne veux pas d'animation de transition lorsque je change entre les activités. Voici comment je change d'une activité à l'autre:

Intent i = new Intent(FirstActivity.this, SecondActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(i);

cela fonctionne bien la première fois que je commence une nouvelle activité. Il n'y a pas d'animation, mais quand je reviens à une Activité qui est déjà commencé, il semble que "l'Intention.FLAG_ACTIVITY_NO_ANIMATION" est ignoré et l'animation par défaut se produit.

je n'arrive pas à comprendre pourquoi ce qui se passe.

23
demandé sur KevinM 2011-04-15 03:11:28

5 réponses

Avez-vous essayé overridePendingTransition()?

40
répondu CommonsWare 2011-10-14 18:56:19

vous pouvez définir FLAG_ACTIVITY_REORDER_TO_FRONT par code et FLAG_ACTIVITY_NO_ANIMATION dans manifest comme suit:

Créer noAnimTheme dans res/values/styles.xml

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

ou

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

et l'utiliser dans le manifeste:

<activity android:name="SecondActivity" android:theme="@style/noAnimTheme"/>

j'espère que cela aide

15
répondu thanhbinh84 2013-09-24 04:32:37

j'en avais besoin car je devais créer des activités en cliquant sur les menus.

j'ai fait le code suivant :

j'ai ajouté FLAG_ACTIVITY_NO_ANIMATION drapeau de l'intention. Il a arrêté les animations tout en créant l'activité pour la première fois.

cependant les activités dans la pile qui ont été appelées quand on clique à nouveau sur le même menu (probablement d'une autre activité), il y avait l'animation.

donc j'ai ajouté FLAG_ACTIVITY_NO_HISTORY pour effacer ou plutôt, terminez l'activité quand il commence une nouvelle activité. Cela a provoqué la création d'une nouvelle activité (sans animation) lorsque je clique à nouveau sur le menu.

3
répondu Naresh R 2013-06-18 09:27:05

ajouter ceci après avoir créé la deuxième intention

        Intent i = new Intent(SecondActivity.this, FirstActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(i);

lorsque vous revenez à la première intention, l'animation est désactivée, a travaillé pour moi

3
répondu Shreyash Padhi 2016-11-14 14:03:56

si vous utilisez FLAG_ACTIVITY_REORDER_TO_FRONT, vous pouvez aussi outrepasser onNewIntent pour les appels startActivity ultérieurs. Cela ne fonctionnera que pour amener à l'avant États au lieu de premier appel.

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    overridePendingTransition(R.anim.whatever, R.anim.whatever);
}

bien sûr, vous devez implémenter ceci dans l'activité cible.

1
répondu asozcan 2017-03-21 17:53:42