【问题标题】:Orchestrating Android Motion Layout animations编排 Android 运动布局动画
【发布时间】:2019-06-16 07:29:30
【问题描述】:
我有一个 xml 布局,我想在用户单击按钮时实现一些动画,所以我想使用带有 MotionScene 的新 MotionLayout。
在布局中,我有一个必须向上滑动的背景 FrameLayout,以及一个在用户单击时必须出现的 ImageView(alpha 属性动画);问题是首先布局应该向上滑动,然后出现 ImageView,但是在 MotionScene 的转换中,我只能指定一个开始的 ConstraintSet 和一个结束的 ConstraintSet,但不能指定中间的;我想过使用 KeyAttributes,但它们不允许我设置背景布局的高度,如果我在(例如)动画的 50% 处将它们与 translationY 属性一起使用,那么它会保持原样吗?
另外,如何从java代码开始一个MotionLayout动画呢?
提前致谢。
【问题讨论】:
标签:
android
android-animation
android-motionlayout
【解决方案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)