У меня есть макет xml, в котором я хотел бы реализовать некоторую анимацию, когда пользователь нажимает кнопку, поэтому я подумал об использовании нового MotionLayout с MotionScene. В макете у меня есть фон FrameLayout, который должен скользить вверх, и ImageView, который должен отображаться (анимация альфа-свойства) при нажатии пользователем; проблема в том, что сначала макет должен скользить вверх, а затем появится ImageView, но в переходе MotionScene я могу указать только начальный ConstraintSet и конечный ConstraintSet, но не промежуточный; Я думал об использовании KeyAttributes, но они не позволяют мне установить высоту фонового макета, и если я использую их с атрибутом translationY на (например) 50% процента анимации, то останется ли он как есть или нет? Кроме того, как запустить анимацию MotionLayout из java-кода? заранее спасибо.
Что касается вопроса об изменении высоты представления с использованием KeyAttribute
<KeyPosition
motion:keyPositionType = "parentRelative"
motion:percentHeight = "1"
motion:percentY = "0"
motion:percentX = "0"
motion:framePosition = "50"
motion:motionTarget = "@id/sliding_view"/>
Это прикрепит представление к верхнему левому углу (с процентами X и процентами Y) и увеличит высоту до полной на 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)