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.
5 réponses
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
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.
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
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.