Я застрял, пытаясь анимировать значение высоты в процентах представления карты материала, вложенного в макет ограничения.
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/black_tile"
android:id="@+id/add_edit_match_constraint_view"
android:animateLayoutChanges="true">
<com.google.android.material.card.MaterialCardView
android:id="@+id/main_add_edit_card"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardBackgroundColor="@color/lightGrey"
app:cardCornerRadius="5dp"
android:elevation="12dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent=".95"
app:layout_constraintHeight_percent=".3"
android:layout_marginTop="20dp"
>
Я подумал, что смогу использовать набор ограничений для доступа к значению высоты в процентах, а затем использовать аниматор значений для увеличения высоты.
same_for_black_switch.setOnClickListener {
if(bView.visibility == GONE) {
var va = ValueAnimator.ofFloat(.4F).setDuration(2500)
var cs = ConstraintSet()
va.addUpdateListener(object: ValueAnimator.AnimatorUpdateListener {
override fun onAnimationUpdate(animation: ValueAnimator?) {
val animval = animation?.animatedValue as Float
cs.constrainPercentHeight(main_add_edit_card.id, animval)
}
})
var set = AnimatorSet()
set.play(va)
set.start()
}
}
Я хочу, чтобы высота вида карты увеличивалась с процентной высоты по умолчанию от 0,3 до 0,4. Я попытался установить это в ValueAnimator и передать его в прослушиватель обновлений. Затем я подумал, что могу направить прослушиватель обновлений в представление моей карты, используя идентификатор просмотров карты внутри constrainPercentHeight в методе onAnimationUpdate.
Любая обратная связь или руководство будет принята с благодарностью. Приветствия.