使用过渡动画为布局的变化添加动画效果(场景过渡动画)
为布局的变化添加动画效果大概需要以下几个流程:
1.为起始布局和结束布局个创建一个Scene(场景)对象。然而大部分情况下,我们不需要创建起始布局的Scene对象,因为起始布局的场景通常是根据当前布局自动确定的。
2.创建一个Transition对象来定义所需的动画类型。
3.调用TransitionManager.go(),系统会运行动画以交换布局。
创建场景
我们可以直接从布局文件中创建Scene实例。调用Scene.getSceneForLayout()。该方法接受三个参数,第一个参数是场景所在的ViewGroup,第二个参数是场景的布局文件ID,第三个参数是一个Context对象。
比如Activity布局文件如下:res/layout/activity_main.xml
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
...>
</androidx.appcompat.widget.Toolbar>
<FrameLayout
android:id="@+id/scene_root"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar">
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
第一个场景布局文件如下:res/layout/a_scene.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id