1

我有一个 xml 布局,我想在用户单击按钮时实现一些动画,所以我想使用带有 MotionScene 的新 MotionLayout。在布局中,我有一个必须向上滑动的背景 FrameLayout,以及一个在用户单击时必须出现的 ImageView(alpha 属性动画);问题是首先布局应该向上滑动,然后出现 ImageView,但是在 MotionScene 的转换中,我只能指定一个开始的 ConstraintSet 和一个结束的 ConstraintSet,但不能指定中间的;我想过使用 KeyAttributes,但它们不允许我设置背景布局的高度,如果我在(例如)动画的 50% 处将它们与 translationY 属性一起使用,那么它会保持原样吗?另外,如何从java代码开始一个MotionLayout动画呢?提前致谢。

4

1 回答 1

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)
于 2019-06-15T23:29:30.063 回答