5

Ich habe nach dem einfachsten Weg gesucht, um ein Objekt mit ConstraintLayout von Punkt A zu Punkt B zu animieren, mit der Fähigkeit, seine Dauer und Beschleunigungsgeschwindigkeit zu ändern. Z. B. Bewegen eines Layouts/einer Ansicht von außerhalb des Bildschirms nach unten zu seiner beabsichtigten Position mit festgelegten Beschränkungen auf dem Bildschirm. Ich konnte nicht finden, wie man es für Objekte mit ConstraintLayout macht. Jeder kann mich in die richtige Richtung weisen? Vielen Dank.Wie ConstraintLayout von unten nach oben animiert wird?

Antwort

6

diese xml als Inhaltsansicht Mit:

<?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> 

Und dies in der Aktivität:

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) 
     } 
    } 
} 

in dieser Ausgabe führen:

enter image description here

Siehe this article und this presentation für mehr Einzelheiten.

Verwandte Themen