编排Android Motion布局动画

时间:2019-03-08 16:41:38

标签: android android-animation android-motionlayout

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

1 个答案:

答案 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)