Cómo animar ConstraintLayout de abajo hacia arriba de la pantalla?

He estado buscando la forma más simple de animar un object con ConstraintLayout desde el punto A hasta el punto B, con la capacidad de cambiar su duración y velocidad de aceleración. Por ejemplo, mover un layout / vista desde la parte inferior de la pantalla a su position prevista con restricciones establecidas en la pantalla. No he podido encontrar la forma de hacerlo para objects con ConstraintLayout . ¿Alguien puede señalarme en la dirección correcta? Gracias.

Tener este xml como vista de contenido:

 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/constraint_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="Button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0" /> </android.support.constraint.ConstraintLayout> 

Y esto en la actividad:

 class SecondActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.item) val constraintLayout = findViewById(R.id.constraint_layout) as ConstraintLayout val button = findViewById(R.id.button) button.setOnClickListener { val constraintSet = ConstraintSet() constraintSet.clone(constraintLayout) constraintSet.setVerticalBias(R.id.button, 1.0f) constraintSet.setHorizontalBias(R.id.button, 1.0f) val transition = AutoTransition() transition.duration = 1500 transition.interpolator = AccelerateDecelerateInterpolator() TransitionManager.beginDelayedTransition(constraintLayout, transition) constraintSet.applyTo(constraintLayout) } } } 

Producirá esta salida:

enter image description here

Vea este artículo y esta presentación para más detalles.