android - 是否可以使用 MotionLayout 将不同的持续时间应用于 ConstraintSet 中的不同约束?
问题描述
我正在尝试为登录屏幕实现动画,其中两个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>
推荐阅读
- php - 当我尝试在 symfony 4 中对我的密码进行哈希处理时,我得到了什么错误
- go - 在circle ci中使用go mod获取私人回购
- python - Autospec 模拟没有正确保留签名?
- java - 修改有效的 AWS 联合用户策略/联合令牌 (AWSJavaSDK)
- sql - 在 SAS 中将表从 SQL Server 复制到 Oracle - SQL Server 中的列名太长
- ios - 在 iOS 中,在纯 C 中,这是获取本地文件路径的方法吗?
- java - 如何删除数组中的“null”元素?
- python - 通过模块名称和严重性记录到不同的位置
- c# - 如何映射字典类型的属性
使用流利的映射 - mysql - GROUP_CONCAT 不同的日期和相应的值(绘制图表)