Управление анимацией Android Motion Layout - PullRequest
0 голосов
/ 08 марта 2019

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

1 Ответ

1 голос
/ 16 июня 2019

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