J'ai deux activités dans la pile, afin de leur montrer que j'utilise FLAG_ACTIVITY_REORDER_TO_FRONT. Jusqu'ici tout va bien, le problème survient lorsque je veux apporter l'activité avec une animation en utilisant overridePendingTransition.
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ActivityA.this.startActivity(i);
overridePendingTransition(R.anim.transition_to_right, R.anim.transition_to_left);
La transition n'est pas affichée, cependant, si l'indicateur n'est pas ajouté à l'intention (suppression de la ligne 2), il n'y a pas de problème.
Est-il possible de mettre en avant une activité avec une animation?
Merci beaucoup!
En fait, la bonne solution lors de l'utilisation de REORDER_TO_FRONT est d'appeler overridePendingTransition dans la méthode onNewIntent () de l'activité que vous allez ouvrir.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
}
remplacer par vos transitions.
Si vous devez remplacer la transition de manière sélective, vous pouvez ajouter un supplément dans votre intention et la vérifier dans onNewIntent () pour décider quoi faire.
Cela ne convient pas si vous ne connaissez pas la transition qui sera ouverte (si vous ne la spécifiez pas explicitement par exemple) mais sinon c'est la bonne solution.
J'ai rencontré ce même problème. L'astuce consiste à remplacer la transition dans le rappel onResume ().
@Override
public void onResume() {
super.onResume();
overridePendingTransition(R.anim.transition_to_right, R.anim.transition_to_left);
}
pour moi, la solution était de s'assurer qu'il s'exécute dans le thread d'interface utilisateur
runOnUiThread(new Runnable() {
public void run() {
startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
}
});
finish();
Appel
overridePendingTransition(R.anim.transition_to_right, R.anim.transition_to_left);
après l'arrivée (); de l'activité de clôture a fonctionné pour moi.
finish();
overridePendingTransition(R.anim.transition_to_right, R.anim.transition_to_left);
C'est mieux que d'appeler sur Resume, car cela rend l'activité plus indépendante des animations d'entrée et de sortie:
Appel après la fin de l'activité de l'expéditeur:
Activité A --- Entrez la transition 1 (sur A) ---> Activité B --- Entrez la transition 2 (sur B) ---> Activité C
Activité A <--- Sortie Transition 1 (sur B) --- Activité B <--- Sortie Transition 2 (sur C) --- Activité C
Activité A --- Entrez la transition 1 (sur A) ---> Activité C --- Entrez la transition 3 (sur C) ---> Activité B
Activité A <--- Sortie Transition 3 (sur C) --- Activité C <--- Sortie Transition 2 (sur B) --- Activité B
Appel en cours Reprise de l'activité du récepteur:
Activité A --- Entrez la transition 1 (sur B) ---> Activité B --- Entrez la transition 2 (sur C) ---> Activité C
Activité A <--- Entrez la transition 1 (sur A) --- Activité B <--- Entrez la transition 2 (sur B) --- Activité C
Activité A --- Entrez la transition 3 (sur C) ---> Activité C --- Entrez la transition 2 (sur B) ---> Activité B
Activité A <--- Entrez la transition 1 (sur A) --- Activité C <--- Entrez la transition 3 (sur C) --- Activité B
Ici, l'animation onResume doit toujours être la même, quelle que soit l'activité de l'expéditeur, c'est la première approche, où vous pouvez facilement personnaliser l'animation.
J'ai le même problème. Je vous suggère de vérifier votre AndroidManifest.xml pour vous assurer que ActivityA et ActivityB n'ont pas de jeu Theme.Translucent.NoTitleBar, ce thème contient "Android: windowIsTranslucent" = true cause le problème.
J'espère que cela vous aidera.
Mon collègue a rencontré ce problème et il a réussi à le résoudre en y ajoutant l'attribut SDK minimum (5 et plus).
puisque cette fonctionnalité était disponible depuis l'api 5, imposer l'utilisation d'un niveau sdk supérieur a fait l'affaire pour nous.
Que diriez-vous de créer une animation dans onCreate () ou onStart () de la deuxième activité.