Bur*_*hid 3 android android-layout android-constraintlayout android-motionlayout
我有一个用例,其中我想使用MotionLayout创建类似动画的Youtube。此仓库中有此动画的样本。但是问题在于,在此示例中,他们将静态高度用于起始约束,如下所示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>
Run Code Online (Sandbox Code Playgroud)
但是我要求使用宽高比设置约束。对于静态长宽比,我可以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" />
Run Code Online (Sandbox Code Playgroud)
但是我从API获得的每个视频都有不同的宽高比,因此我想根据视频设置不同的宽高比。我无法找到一种方法以编程方式在ConstraintSet
我尝试了一种解决方法,以android:layout_height="wrap_content"编程方式设置和更改视图宽高比。但是它不起作用,动画不能正常工作。
任何解决方案或建议,将不胜感激。
您可以做的是访问ConstraintSet,然后设置比率:
motionLayout.getConstraintSet(R.id.start)?.let { startConstraintSet ->
val ratio = imageView.calculateRatio()
startConstraintSet.setDimensionRatio(R.id.top_image_container, ratio)
// You can set the width and height here as well
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |