У меня есть вариант использования, когда я хочу создать анимацию, похожую на Youtube, с помощью MotionLayout. В репозитории this есть образец этой анимации. Но проблема в том, что в этом примере они используют статическую высоту для начального ограничения, такого как 320dp
:
<MotionScene...>
<Transition..>
<OnSwipe... />
<ConstraintSet android:id="@id/start">
<Constraint
android:id="@id/top_image_container"
android:layout_width="0dp"
android:layout_height="320dp"
motion:layout_constraintTop_toTopOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintEnd_toEndOf="parent" />
</ConstraintSet>
</Transition>
</MotionScene>
Но мое требование установить ограничение с использованием соотношения сторон. Для статического соотношения сторон я могу установить, используя app:layout_constraintDimensionRatio="w,16:9"
в Constraint, как это.
<Constraint
android:id="@id/top_image_container"
android:layout_width="0dp"
android:layout_height="0dp"
motion:layout_constraintTop_toTopOf="w,16:9"
motion:layout_constraintTop_toTopOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintEnd_toEndOf="parent" />
Но каждое видео имеет разное соотношение сторон, которое я получаю от API, поэтому я хочу установить другое соотношение сторон в зависимости от видео. Я не могу найти способ установить это программно в ConstraintSet
Я попробовал обходной путь, чтобы установить android:layout_height="wrap_content"
и программно изменить соотношение сторон экрана. Но это не сработало, и анимация не работала должным образом.
Любое решение или предложение будут оценены.