1

J'ai deux activités et une transition de diapositive entre elles. Assez simple. Mais, pour une raison quelconque, ActivityOptions.makeSceneTransitionAnimation(Activity) semble créer une activité vide sur la pile. Ou plutôt, il conserve mon activité d'origine sur la pile, mais annule la vue racine pour qu'elle ressemble à une activité vide. J'utilise le moyen le plus vanille pour créer une transition de scène à partir des docs. Je ne suis pas tout à fait sûr pourquoi c'est un problème à moins que ce soit un problème connu. Quelqu'un d'autre l'expérience cela? Si oui, l'avez-vous réparé?ActivityOptions.makeSceneTransitionAnimation crée une activité vide

public void startSearchActivity(MenuItem view) { 
    Intent searchActivity = new Intent(this, SearchActivity.class); 
    ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation(HomeActivity.this); 
    startActivity(searchActivity, transitionActivityOptions.toBundle()); 
} 

private void setupWindowAnimations() { 
    Transition slide = new Slide(); 
    slide.setDuration(1000); 
    ((Slide)slide).setSlideEdge(Gravity.LEFT); 
    getWindow().setEnterTransition(slide); 
    getWindow().setReenterTransition(slide); 
    getWindow().setExitTransition(slide); 
} 

Et puis l'activité # 2 j'appelle simplement soit arrivée, onBackPressed ou finishFromTransition. Aucun d'entre eux ne semble me ramener à l'activité originale que j'avais sur la pile. Si je repasse de l'activité n ° 2, le onResume() de l'activité n ° 1 est appelé .. mais c'est comme si son contenu n'avait jamais été initialisé ou si son affichage était initialisé. Si je lance à nouveau l'application, l'activité d'origine reçoit son onCreate qui se re-lie et relaie les vues.

Une autre chose étrange à noter est que les boutons "back", "home", et "recents" soft android ne sont pas affichés lors de la saisie de cette activité vide. En fait, la seule chose qui ressemble est conservé de mon application est la couleur de la barre d'état. MISE À JOUR: J'ai remarqué que si je ne laisse pas la transition se terminer et que je repasse en arrière. Cela reviendra très bien à mon activité précédente. C'est seulement quand la transition se termine et que je passe à l'activité suivante que je rencontre des problèmes.

+1

J'ai ce même problème. Suivant. – BajaBob

+0

J'ai aussi le même problème dans Api 19 –

Répondre

0

Wow ... Je l'ai compris. Il s'avère que c'est hors de notre contrôle pour l'instant. C'est un problème avec l'API 24+. J'ai regardé makeSceneTransition et il a une logique séparée pour ces apis (bien sûr). C'est très décourageant. J'espère que Google pourra bientôt résoudre ce problème.

0

Essayez ceci.

  1. Créez un dossier "anim" dans votre répertoire res /.

  2. A l'intérieur du dossier anim créer 2 fichiers de ressources de mise en page et le nom in_from_right.xml out_from_left.xml

Ajoutez le code suivant à in_from_right.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:fromXDelta="100%" android:toXDelta="0%" 
    android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="1000" /> 
</set> 

et le code ci-dessous pour out_from_left.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="0%" android:toXDelta="-100%" 
     android:fromYDelta="0%" android:toYDelta="0%" 
     android:duration="1000"/> 
</set> 

Maintenant, ajoutez ceci à votre fichier Activity.java

try { 
       Intent searchActivity = new Intent(this,SearchActivty.class); 

       searchActivty.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
       startActivity(searchActivty); 
      }catch (NullPointerException e){ 
       e.printStackTrace(); 
      } 
      overridePendingTransition(R.anim.in_from_right, R.anim.out_from_left); 

N'oubliez pas d'ajouter le dossier anim.

Cela fonctionnera pour vous.

Bonne codification.

+0

Merci. Je suis bien conscient de overridePendingTransition. Ce n'est pas ce que j'essaye d'accomplir cependant. – cj1098

1

Compris. Dans mon cas, certaines transitions ont été définies dans mon fichier styles.xml. L'ajout de plusieurs animations à l'activité a provoqué ce comportement (activité vide après avoir appuyé sur le bouton de retour du système). Supprimez simplement les traces de window * Transition de votre fichier styles.xml et vous devriez être prêt à partir.

<item name="android:windowEnterTransition">@transition/slide_from_right</item> 
    <item name="android:windowExitTransition">@transition/slide_from_right</item> 
+0

Malheureusement, je suis allé dans cette avenue et cela n'a eu aucun effet. De quel parent hérite votre thème? Je n'ai actuellement aucune autre transition définie à l'exception de celles que j'ai ajoutées par programmation – cj1098

+0

J'utilisais des thèmes basés sur AppCompat, mais depuis que mon application supporte Android 5.0 et plus, j'ai opté pour les supprimer. Êtes-vous en train de configurer la transition avant super.onCrée()? – BajaBob

0

Dans mon cas, j'ai écrasé la mauvaise méthode onCreate pour la nouvelle activité. Après avoir gonflé la mise en page sur l'autre méthode onCreate tout a bien fonctionné :-)