一 概述
Scene 是Android 19 引入的转换框架中一个场景api,帮我们友好的创建开始布局Scene和结束布局Scene,有了开始Scene和结束Scene,运用Transition框架来实现带有动画的场景切换。举个例子,从A布局切换到B布局,一般情况下处理是View.GONE,View.VISIBLE,但是这样太生硬了,没有一点过度效果。那么Android的Transition框架就可以完美的解决切换场景带来的生硬视觉感受。
其中Scene是一个容器,就是放置你定义的布局,而真正去做场景之间切换这个动作是Transition框架中TransitionManager 调用其中go方法或者transitionTo方法完成场景之间切换,而真正创建具体动画交由Transition子类来完成,开始动画交给Transition来执行。
二 使用
image
这里一共有4个场景,这里先说前3个。每次切换都带有移动效果。在切换到第三个场景时,单独给第三个场景中TextView添加了淡入和淡出动画效果。
那么如果让我们去实现这样一个场景切换,可能会想到在一个布局中给不同的元素设置不同的动画,还得监听每个动画完成后显示第二个场景中的元素。这样写出来很难阅读和维护,如果再加一个元素,又得监听以及显示和隐藏。
那么如何实现前三个场景切换呢?其实这三个场景对应三个layout.xml。每一个layout.xml对应一个Scene,各自之间不耦合,至于具体动画创建和偏移计算交给Transition子类来处理,TransitionManager 只是用于做控制流程。
还是看看官方提供的流程图
上述中gif图代码如下:
创建布局文件
...
>
...>
android:id="@+id/select_scene_1"
...
>
android:id="@+id/select_scene_2"
...>
android:id="@+id/select_scene_3"
...
>