我有一个xml布局,当用户单击按钮时,我想在其中实现一些动画,因此我想到了将新的MotionLayout与MotionScene一起使用。 在布局中,我有一个背景FrameLayout(必须向上滑动)和一个ImageView(必须在用户单击时显示)(alpha属性动画)。问题是,首先布局应该向上滑动,然后出现ImageView,但是在MotionScene的Transition中,我只能指定一个起始ConstraintSet和一个结束ConstraintSet,而不能指定一个中间的;我考虑过使用KeyAttributes,但是它们不允许我设置背景布局的高度,如果我将它们与(例如)动画的50%的translationY属性一起使用,那么它会保持原样吗? 另外,如何从Java代码启动MotionLayout动画? 预先感谢。
答案 0 :(得分:1)
关于使用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)