Android 是否可以使用MotionLayout对ConstraintSet中的不同约束应用不同的持续时间?
我正在尝试为登录屏幕实现一个动画,其中用户名和密码的两个Android 是否可以使用MotionLayout对ConstraintSet中的不同约束应用不同的持续时间?,android,android-motionlayout,Android,Android Motionlayout,我正在尝试为登录屏幕实现一个动画,其中用户名和密码的两个EditText在屏幕外设置动画,并以不同的持续时间返回到原始位置。如下所示!。我可以部分地设置动画。但我无法复制延迟动画类型的运动。我尝试使用过渡缓和,但效果不一样 <Transition motion:constraintSetStart="@id/scene_login_start" motion:constraintSetEnd="@id/scene_login_end" motion:duration
EditText
在屏幕外设置动画,并以不同的持续时间返回到原始位置。如下所示!。我可以部分地设置动画。但我无法复制延迟动画类型的运动。我尝试使用过渡缓和,但效果不一样
<Transition
motion:constraintSetStart="@id/scene_login_start"
motion:constraintSetEnd="@id/scene_login_end"
motion:duration="350">
<KeyFrameSet>
<KeyPosition
motion:target="@id/editText_username"
motion:keyPositionType="pathRelative"
motion:framePosition="1"
motion:transitionEasing="accelerate" />
<KeyPosition
motion:target="@id/editText_password"
motion:keyPositionType="pathRelative"
motion:framePosition="1"
motion:transitionEasing="linear" />
<KeyPosition
motion:target="@id/editText_password"
motion:keyPositionType="pathRelative"
motion:framePosition="50"
motion:transitionEasing="decelerate" />
<KeyPosition
motion:target="@id/editText_password"
motion:keyPositionType="pathRelative"
motion:framePosition="70"
motion:transitionEasing="decelerate" />
</KeyFrameSet>
</Transition>
是否可以使用
Motionlayout
实现该类型的动画?您可以使用KeyPosition控制它。在下面的示例中,textview的动画将在第40帧之前播放,然后在第50帧转到动画的第50帧,并在第75帧完成动画。如果不指定最后一帧,动画将在第100帧正常完成
<KeyFrameSet>
<KeyPosition
motion:percentY="0"
motion:percentX="0"
motion:framePosition="40"
motion:target="@id/textview" />
<KeyPosition
motion:percentY="0.5"
motion:percentX="0.5"
motion:framePosition="50"
motion:target="@id/textview" />
<KeyPosition
motion:percentY="1"
motion:percentX="1"
motion:framePosition="75"
motion:target="@id/textview" />
</KeyFrameSet>
<ConstraintSet>
</ConstraintSet>
</MotionScene>
是否有一种解决方案用于一般约束而不是仅用于位置约束?例如,如果我更改视图的约束并调整其大小,我也想控制该视图的计时。@安德烈:这些帧指向特定的动画状态。所以,如果将关键帧应用于约束集,其中初始比例为0,最终比例为1,则直到40-比例将为0,40和50之间的比例将从0增加到0.5,从50增加到75,它将增加到1。如果您需要制作复杂的动画,则需要通过代码组合它们。至少在我上一次这样做时,不可能将它们组合成XMLtime@Santosh如果您觉得这个答案有用,请将其标记为已接受。