Transition d’activité dans Android

Comment définir la transition entre deux activités pour Android 1.5 et versions ultérieures? Je voudrais une activité à disparaître

    Vous pouvez le faire avec Activity.overridePendingTransition() . Vous pouvez définir des animations de transition simples dans un fichier de ressources XML. Un bon tutoriel à ce sujet peut être trouvé ici .

    Voici le code pour faire un joli fondu entre deux activités.

    Créer un fichier appelé fadein.xml dans res / anim

     < ?xml version="1.0" encoding="utf-8"?>  

    Créez un fichier appelé fadeout.xml dans res / anim

     < ?xml version="1.0" encoding="utf-8"?>  

    Si vous souhaitez passer de l’activité A à l’activité B, placez les éléments suivants dans la méthode onCreate pour l’activité B. Avant de travailler pour setContentView.

     overridePendingTransition(R.anim.fadein, R.anim.fadeout); 

    Si les fondus sont trop lents pour vous, changez android: duration dans les fichiers XML ci-dessus en quelque chose de plus petit.

    Un moyen facile de le faire est:

    1. Créez un style d’animation dans votre fichier styles.xml
      
    1. Ajoutez ce style au thème de votre application
      

    C’est tout 🙂

    Oui. Vous pouvez indiquer au système d’exploitation quel type de transition vous souhaitez avoir pour votre activité.

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setWindowAnimations(ANIMATION); ... } 

    Où ANIMATION est un entier faisant référence à une animation intégrée dans le système d’exploitation.

    Pour une liste des animations par défaut, voir: http://developer.android.com/reference/android/R.anim.html

    Il existe en fait fade_in et fade_out pour les API de niveau 1 et plus.

    créer res> anim> fadein.xml

     < ?xml version="1.0" encoding="utf-8"?>  

    créer res> anim> fadeout.xml

     < ?xml version="1.0" encoding="utf-8"?>  

    In res> values> styles.xml

      

    Dans les activités onCreate ()

     getWindow().getAtsortingbutes().windowAnimations = R.style.Fade; 

    Voici le code pour bien faire entre deux activités.

    1. effet lisse de gauche à droite

      Créez un fichier nommé slide_in_right.xml et slide_out_right.xml dans res / anim

      slide_in_right.xml

        < ?xml version="1.0" encoding="utf-8"?>     

      slide_out_right.xml

       < ?xml version="1.0" encoding="utf-8"?>     
    2. effet lisse de droite à gauche

      Créez un fichier nommé animation_enter.xml et animation_leave.xml dans res / anim

      animation_enter.xml

           

      animation_leave.xml

           
    3. Naviguer d’une activité à l’autre

        Intent intent_next=new Intent(One_Activity.this,Second_Activity.class); overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right); startActivity(intent_next); finish(); 

      4.Actualiser un événement ou Naviguer d’une deuxième activité à une seule activité

        Intent home_intent = new Intent(Second_Activity.this, One_Activity.class); overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave); startActivity(home_intent); finish(); 

    Je remplace mon animation d’activité par défaut. Je le teste dans api 15 qu’il fonctionne bien. Voici la solution que j’utilise:

        

    Créez un dossier anim sous le dossier res, puis créez ces quatre fichiers d’animation:

    slide_in_right.xml

     < ?xml version="1.0" encoding="utf-8"?>    

    slide_out_left.xml

     < ?xml version="1.0" encoding="utf-8"?>    

    slide_in_left.xml

     < ?xml version="1.0" encoding="utf-8"?>    

    slide_out_right.xml

     < ?xml version="1.0" encoding="utf-8"?>    

    Vous pouvez télécharger mon exemple de projet .

    C’est tout… 🙂

    Vous ne pouvez pas utiliser overridePendingTransition sous Android 1.5. overridePendingTransistion est venu à Android 2.0.

    Si vous devez parcourir ceci sans aucune erreur, vous devez comstackr pour la cible (1.5 ou supérieure) en utilisant les animations ordinaires (ou vous possédez) ou vous devez comstackr pour la cible (2.0 ou supérieure) en utilisant overridePendingTransistion.

    Résumé: Vous ne pouvez pas utiliser overridePendingTransistion dans Android 1.5 .

    Vous pouvez cependant utiliser les animations intégrées dans le système d’exploitation.

    Dans les appareils GALAXY:

    Vous devez vous assurer que vous ne l’avez pas désactivé dans l’appareil à l’aide des parameters> Options du développeur:

    two muppets

    Utilisez l’API de travail ActivityCompat.startActivity ()> 21.

      ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionImage, EXTRA_IMAGE); ActivityCompat.startActivity(activity, intent, options.toBundle()); 

    Avant de commencer votre intention:

     ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle()); 

    Cela donne une animation par défaut à votre transition d’activité.

    Certaines versions d’Android prennent en charge les transitions d’ Activity personnalisées et d’autres non (appareils plus anciens). Si vous souhaitez utiliser des transitions personnalisées, il est recommandé de vérifier si l’ Activity possède la méthode overridePendingTransition() , contrairement aux anciennes versions.

    Pour savoir si la méthode existe ou non, une API de reflection peut être utilisée. Voici le code simple qui vérifiera et renverra la méthode si elle existe:

     Method mOverridePendingTransition; try { mOverridePendingTransition = Activity.class.getMethod( "overridePendingTransition", new Class[] { Integer.TYPE, Integer.TYPE } ); /* success */ } catch (NoSuchMethodException nsme) { /* failure, this version of Android doesn't have this method */ } 

    Et puis, nous pouvons appliquer notre propre transition, c’est-à-dire utiliser cette méthode si elle existe:

     if (UIConstants.mOverridePendingTransition != null) { try { UIConstants.mOverridePendingTransition.invoke(MainActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } 

    Ici, par exemple, de simples animations de fondu en entrée et en sortie ont été utilisées pour la démonstration de la transition.

    zoomer sur l’animation

     Intent i = new Intent(getApplicationContext(), LoginActivity.class); overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit); startActivity(i); finish(); 

    zoom_enter

     < ?xml version="1.0" encoding="utf-8"?>  

    zoom_exit