Оркестрация анимации Android Motion Layout

У меня есть макет xml, в котором я хотел бы реализовать некоторую анимацию, когда пользователь нажимает кнопку, поэтому я подумал об использовании нового MotionLayout с MotionScene. В макете у меня есть фон FrameLayout, который должен скользить вверх, и ImageView, который должен отображаться (анимация альфа-свойства) при нажатии пользователем; проблема в том, что сначала макет должен скользить вверх, а затем появится ImageView, но в переходе MotionScene я могу указать только начальный ConstraintSet и конечный ConstraintSet, но не промежуточный; Я думал об использовании KeyAttributes, но они не позволяют мне установить высоту фонового макета, и если я использую их с атрибутом translationY на (например) 50% процента анимации, то останется ли он как есть или нет? Кроме того, как запустить анимацию MotionLayout из java-кода? заранее спасибо.

1
0
666
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что касается вопроса об изменении высоты представления с использованием 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)

Другие вопросы по теме