<PositionClé>

Spécifie la position d'une vue à un moment précis de la séquence de mouvement. Cet attribut permet d'ajuster la trajectoire par défaut du mouvement.

Par exemple, si un objet commence dans l'angle supérieur gauche et se termine dans l'angle inférieur droit, la séquence de mouvement par défaut déplace l'objet en diagonale vers le bas de l'écran. En ajoutant un ou plusieurs éléments <KeyPosition>, vous pouvez déformer le tracé.

Syntaxe

<KeyPosition
    motion:motionTarget="@id/targetPath"
    motion:framePosition="percentage"
    motion:keyPositionType="type"
    motion:percentX="xOffset"
  motion:percentY="yOffset"
/>

Attributs

motion:motionTarget
Vue dont le mouvement est contrôlé par <KeyPosition>.
motion:framePosition
Entier compris entre 1 et 99 qui indique quand, dans la séquence de mouvement, la vue atteint le point spécifié par cette <KeyPosition>. Par exemple, si framePosition est défini sur 25, la vue atteint le point spécifié sur le quart du mouvement.
motion:percentX, motion:percentY
Spécifiez la position à laquelle la vue doit s'afficher. L'attribut keyPositionType spécifie la manière dont ces valeurs sont interprétées.
motion:keyPositionType
Spécifie la manière dont les valeurs percentX et percentY sont interprétées. Les paramètres possibles sont les suivants:
  • parentRelative
  • percentX et percentY sont spécifiés par rapport à la vue parent. X correspond à l'axe horizontal, compris entre 0 pour le côté gauche et 1 pour le côté droit. Y est l'axe vertical, 0 étant le haut et 1 représentant le bas.

    Par exemple, si vous souhaitez que la vue cible atteigne un point situé au milieu du côté droit de la vue parent, définissez percentX sur 1 et percentY sur 0,5.

  • deltaRelative
  • percentX et percentY sont spécifiés en fonction de la distance parcourue par la vue au cours de toute la séquence de mouvement. X est l'axe horizontal et Y l'axe vertical. Dans les deux cas, 0 correspond à la position de départ de la vue sur cet axe et 1 à la position finale.

    Supposons que la vue cible se déplace de 100 dp vers le haut et de 100 dp vers la droite, mais que vous souhaitiez qu'elle descende de 40 dp pendant le premier quart du mouvement, puis revient en arc vers le haut. Définissez framePosition sur 25, keyPositionType sur deltaRelative et percentY sur -0, 4.

  • pathRelative
  • L'axe X représente la direction dans laquelle la vue cible se déplace au cours du tracé, 0 étant la position de départ et 1 la position finale. L'axe des ordonnées est perpendiculaire à l'axe des abscisses. Les valeurs positives sont à gauche du tracé et les valeurs négatives à droite. La position initiale de la vue est donc (0,0) et la position finale est (1,0). Si vous définissez une valeur percentY non nulle, la vue forme un arc dans une direction ou dans l'autre.

    Supposons que vous souhaitiez que la vue couvre la moitié de la séquence de mouvement pour couvrir 10% de la distance totale, puis accélère pour couvrir les 90 % restants. Définissez framePosition sur 50, keyPositionType sur pathRelative et percentX sur 0.1. percentY reste égal à 0.

Contenue dans