编排 Android 运动布局动画
Orchestrating Android Motion Layout animations
我有一个 xml 布局,我想在用户单击按钮时实现一些动画,所以我想到了将新的 MotionLayout 与 MotionScene 一起使用。
在布局中,我有一个必须向上滑动的背景 FrameLayout,以及一个必须在用户单击时出现(alpha 属性 动画)的 ImageView;问题是首先布局应该向上滑动然后出现 ImageView,但是在 MotionScene 的 Transition 中我只能指定一个起始 ConstraintSet 和一个结束 ConstraintSet 但不能指定中间 ConstraintSet;我想过使用 KeyAttributes,但它们不允许我设置背景布局的高度,如果我将它们与 translationY 属性一起使用(例如)动画的 50%,那么它会保持原样吗?
另外,如何从 java 代码开始一个 MotionLayout 动画?
提前致谢。
关于使用 KeyAttribute 更改视图高度的问题,请使用
<KeyPosition
motion:keyPositionType="parentRelative"
motion:percentHeight="1"
motion:percentY="0"
motion:percentX="0"
motion:framePosition="50"
motion:motionTarget="@id/sliding_view"/>
这会将视图固定到左上角(使用 percentX 和 percentY)并将高度增加到动画的 50% 处。
然后为图像视图设置动画:
<KeyAttribute
motion:motionTarget="@id/image_view"
motion:framePosition="50"
android:alpha="0"/>
从 java 代码开始运动场景转换:
MotionLayout motionLayout = findViewById(R.id.motion_layout)
motionLayout.transitionToState(R.id.state)
我有一个 xml 布局,我想在用户单击按钮时实现一些动画,所以我想到了将新的 MotionLayout 与 MotionScene 一起使用。 在布局中,我有一个必须向上滑动的背景 FrameLayout,以及一个必须在用户单击时出现(alpha 属性 动画)的 ImageView;问题是首先布局应该向上滑动然后出现 ImageView,但是在 MotionScene 的 Transition 中我只能指定一个起始 ConstraintSet 和一个结束 ConstraintSet 但不能指定中间 ConstraintSet;我想过使用 KeyAttributes,但它们不允许我设置背景布局的高度,如果我将它们与 translationY 属性一起使用(例如)动画的 50%,那么它会保持原样吗? 另外,如何从 java 代码开始一个 MotionLayout 动画? 提前致谢。
关于使用 KeyAttribute 更改视图高度的问题,请使用
<KeyPosition
motion:keyPositionType="parentRelative"
motion:percentHeight="1"
motion:percentY="0"
motion:percentX="0"
motion:framePosition="50"
motion:motionTarget="@id/sliding_view"/>
这会将视图固定到左上角(使用 percentX 和 percentY)并将高度增加到动画的 50% 处。
然后为图像视图设置动画:
<KeyAttribute
motion:motionTarget="@id/image_view"
motion:framePosition="50"
android:alpha="0"/>
从 java 代码开始运动场景转换:
MotionLayout motionLayout = findViewById(R.id.motion_layout)
motionLayout.transitionToState(R.id.state)