Especifica la posición de una vista en un momento determinado durante la secuencia de movimiento. El atributo se usa para ajustar la ruta predeterminada del movimiento.
Por ejemplo, si un objeto comienza en la esquina superior izquierda y termina en la esquina inferior derecha, la secuencia de movimiento predeterminada mueve el objeto en diagonal hacia abajo en la pantalla. Si agregas uno o más elementos <KeyPosition>
, puedes deformar la ruta.
Sintaxis
<KeyPosition motion:motionTarget="@id/targetPath" motion:framePosition="percentage" motion:keyPositionType="type" motion:percentX="xOffset" motion:percentY="yOffset" />
Atributos
motion:motionTarget
- Vista cuyo movimiento está controlado por
<KeyPosition>
. motion:framePosition
- Número entero del 1 al 99 que especifica en qué momento de la secuencia de movimiento la vista alcanza el punto especificado por
<KeyPosition>
. Por ejemplo, siframePosition
es 25, la vista alcanza el punto especificado a un cuarto del movimiento. motion:percentX
,motion:percentY
- Especifica la posición que alcanza la vista. El atributo
keyPositionType
especifica cómo se interpretan estos valores. motion:keyPositionType
- Especifica cómo se interpretan los valores
percentX
ypercentY
. Las opciones de configuración posibles son las siguientes: parentRelative
percentX
ypercentY
se especifican en relación con la vista superior. X es el eje horizontal, que va de 0 para el lado izquierdo a 1 para el lado derecho. Y es el eje vertical, donde 0 es la parte superior y 1 es la parte inferior.Por ejemplo, si deseas que la vista de destino alcance un punto en la mitad del lado derecho de la vista superior, establece
percentX
en 1 ypercentY
en 0.5.deltaRelative
percentX
ypercentY
se especifican en relación con la distancia que recorre la vista en toda la secuencia de movimiento. X es el eje horizontal e Y es el eje vertical. En ambos casos, 0 es la posición inicial de la vista en ese eje y 1 es la posición final.Supongamos que la vista de destino se mueve 100 dp hacia arriba y 100 dp hacia la derecha, pero quieres que la vista se desplace hacia abajo 40 dp durante el primer cuarto del movimiento y, luego, se reactive con el arco hacia arriba. Establece
framePosition
en 25,keyPositionType
endeltaRelative
ypercentY
en -0.4.pathRelative
El eje X es la dirección en la que se mueve la vista de destino en el transcurso de la ruta, donde 0 es la posición inicial y 1 es la posición final. El eje Y es perpendicular al eje X, con valores positivos a la izquierda de la ruta y valores negativos a la derecha. Por lo tanto, la posición inicial de la vista es
(0,0)
y la posición final es(1,0)
. Configurar unpercentY
distinto de cero hace que la vista se arquee en una dirección o en la otra.Supongamos que quieres que la vista tome la mitad de la secuencia de movimiento para cubrir el 10% de la distancia total y, luego, acelere hasta cubrir el otro 90%. Establece
framePosition
en 50,keyPositionType
enpathRelative
ypercentX
en 0.1.percentY
permanece en 0.