<KeyPosition>

指定视图在运动序列中特定时刻的位置。该属性用于调整默认的运动路径。

例如,如果某个对象从左上角开始,以右下角结束,则默认运动序列会沿屏幕对角线将该对象向下移动。通过添加一个或多个 <KeyPosition> 元素,您可以使路径变形。

语法

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

属性

motion:motionTarget
其运动由此 <KeyPosition> 控制的视图。
motion:framePosition
介于 1 到 99 之间的整数,用于指定在运动序列中视图何时到达此 <KeyPosition> 指定的点。例如,如果 framePosition 为 25,则视图在运动过程中四分之一处到达指定点。
motion:percentXmotion:percentY
指定视图到达的位置。keyPositionType 属性指定这些值的解释方式。
motion:keyPositionType
指定如何解释 percentXpercentY 值。可能的设置如下
  • parentRelative
  • percentXpercentY 是相对于父视图指定的。X 表示水平轴,范围从 0 表示左侧到 1 表示右侧。Y 为纵轴,0 为顶部,1 为底部。

    例如,如果您希望目标视图到达父视图右侧的中间点,请将 percentX 设置为 1,将 percentY 设置为 0.5。

  • deltaRelative
  • percentXpercentY 是相对于视图在整个运动序列过程中移动的距离指定的。X 为水平轴,Y 为纵轴。在这两种情况下,0 表示视图在该轴上的起始位置,1 表示最终位置。

    假设目标视图向上移动 100 dp,向右移动 100 dp,但您希望视图在运动的第一四分之一处向下移动 40 dp,然后向上移动 40 dp。将 framePosition 设置为 25,将 keyPositionType 设置为 deltaRelative,并将 percentY 设置为 -0.4。

  • pathRelative
  • X 轴是目标视图沿路径移动的方向,其中 0 为起始位置,1 为最终位置。Y 轴垂直于 X 轴,正值位于路径左侧,负值位于右侧。因此,视图的初始位置为 (0,0),最终位置为 (1,0)。设置非零 percentY 会导致视图向某个方向或向另一个方向圆弧。

    假设您希望视图占据总距离的 10%,然后加速覆盖其余 90% 的运动序列。将 framePosition 设置为 50,将 keyPositionType 设置为 pathRelative,将 percentX 设置为 0.1。 percentY 仍然为 0。

包含于