Afficher l'animation

Vous pouvez utiliser le système d'animation des vues pour effectuer une animation interpolée sur les vues. Animation d'interpolation calcule l'animation à l'aide d'informations telles que le point de départ, le point d'arrivée, la taille, la rotation et d'autres aspects courants d'une animation.

Une animation d'interpolation peut effectuer une série de transformations simples (position, taille, rotation, et transparence) sur le contenu d'un objet View. Ainsi, si vous disposez d'un objet TextView, vous pouvez déplacer, faire pivoter, agrandir ou réduire le texte. Si un l'image de fond est transformée en même temps que le texte. animation package fournit toutes les classes utilisées dans une animation d'interpolation.

Une séquence d'instructions d'animation définit l'animation d'interpolation, définie par XML ou Code Android. Comme pour la définition d'une mise en page, un fichier XML est recommandé, car il est plus lisible, réutilisable et interchangeable plutôt que de coder en dur l'animation. Dans l'exemple ci-dessous, nous utilisons XML. (À Pour en savoir plus sur la définition d'une animation dans le code de votre application, consultez la AnimationSet et d'autres sous-classes Animation.)

Les instructions d'animation définissent les transformations que vous souhaitez effectuer, à quel moment et combien de temps cela devrait prendre pour les appliquer. Les transformations peuvent être séquentielles ou simultanées - Par exemple, vous pouvez déplacer le contenu d'un TextView de gauche à droite, puis le faire pivoter. 180 degrés, ou vous pouvez déplacer le texte et le faire pivoter simultanément. Chaque transformation prend ensemble de paramètres spécifiques à cette transformation (taille de début et taille de fin pour la taille l'angle de départ et l'angle d'arrivée pour la rotation, etc.), ainsi qu'un ensemble (par exemple, l'heure de début et la durée). Pour effectuer plusieurs transformations simultanément, leur donner la même heure de début ; pour qu'elles soient séquentielles, calculez l'heure de début plus la durée de la transformation précédente.

Le fichier XML d'animation se trouve dans le répertoire res/anim/ de votre application Android projet. Le fichier doit comporter un seul élément racine: il s'agit d'un seul <alpha>, <scale>, <translate> <rotate>, un élément d'interpolateur ou un élément <set> qui contient groupes de ces éléments (qui peuvent inclure un autre <set>). Par défaut, tous les les instructions d'animation sont appliquées simultanément. Pour qu'ils soient exécutés de manière séquentielle, vous devez spécifiez l'attribut startOffset, comme illustré dans l'exemple ci-dessous.

Le code XML suivant de l'une des ApiDemos est utilisé pour étirer, puis faire tourner et faire pivoter un objet View.

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

Les coordonnées de l'écran (non utilisées dans cet exemple) sont (0,0) dans l'angle supérieur gauche, et augmenter au fur et à mesure que vous descendez et vers la droite.

Certaines valeurs, telles que pivotX, peuvent être spécifiées par rapport à l'objet lui-même ou par rapport à la parent. Veillez à utiliser le format adapté à ce que vous souhaitez ("50" pour 50% par rapport au parent, ou "50 %" pour 50% par rapport à lui-même).

Vous pouvez déterminer comment une transformation est appliquée au fil du temps en attribuant un Interpolator. Android inclut plusieurs sous-classes d'interpolateur qui spécifier différentes courbes de vitesse (par exemple, AccelerateInterpolator) ; indique à une transformation de commencer lentement et de l'accélérer. Chacune d'entre elles possède une valeur d'attribut appliquée dans le code XML.

Avec ce fichier XML enregistré sous le nom hyperspace_jump.xml dans res/anim/ du projet, le code suivant le référencera et l'appliquera à un objet ImageView de la mise en page.

Kotlin

AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation ->
    findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation)
}

Java

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

Au lieu de startAnimation(), vous pouvez définir une heure de début pour l'animation avec Animation.setStartTime(), puis affectez-la à la vue avec View.setAnimation().

Pour en savoir plus sur la syntaxe XML, ainsi que sur les balises et les attributs disponibles, consultez la section Ressources d'animation.

Remarque:Quel que soit le déplacement ou le redimensionnement de votre animation, les les limites de la vue qui contient votre animation ne s'ajusteront pas automatiquement pour s'adapter à celle-ci. Néanmoins, l'animation reste dessinée au-delà des limites de sa vue et n'est pas rognée. Toutefois, un rognage se produit si l'animation dépasse les limites de la vue parent.