1

I don't know if it is a bug or i am making some mistake but when i set Explode animation when opening an Activity it animates like a Slide animation from top to bottom. I did some trial and error and it turns out that when i use a custom background color in the root layout in the xml file this unexpected behavior occures. When i remove the background color everything works as expected.

Can anyone tell me what's going on here??? Because it is important for me to set background color in the root layout.

Here's a sample of my xml code:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#000000"                   // This causes the unexpected behavior.
   tools:context=".ExplodeActivity">


<ImageView
    android:id="@+id/imageView2"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_marginTop="100dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/b" />

<Button
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
    

This is the ExplodeActivity 's onCreate method where i am assigning the animation:

class ExplodeActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

    window.requestFeature(Window.FEATURE_CONTENT_TRANSITIONS)

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_explode)

    val enterTransition = Explode()
    enterTransition.duration = 500
    window.enterTransition = enterTransition
}

}

Here's the previous activity's code which responsible for starting the ExplodeActivity:

val options = ActivityOptions.makeSceneTransitionAnimation(this).toBundle()
val intent = Intent(this, ExplodeActivity::class.java)
startActivity(intent, options)
Junior
  • 170
  • 2
  • 10

0 Answers0