Scenes(场景)
Transition Framework
还可以用于改变当前Activity
元素的动画。
过渡动画发生在场景与场景之间,场景是固定的,静态的。在一个场景跳转到另外一个场景期间,Transition Framework
将会作用于其Views
上。
scene1 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene1, this);
scene2 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene2, this);
scene3 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene3, this);
scene4 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene4, this);
(...)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
TransitionManager.go(scene1, new ChangeBounds());
break;
case R.id.button2:
TransitionManager.go(scene2, TransitionInflater.from(this).inflateTransition(R.transition.slide_and_changebounds));
break;
case R.id.button3:
TransitionManager.go(scene3, TransitionInflater.from(this).inflateTransition(R.transition.slide_and_changebounds_sequential));
break;
case R.id.button4:
TransitionManager.go(scene4, TransitionInflater.from(this).inflateTransition(R.transition.slide_and_changebounds_sequential_with_interpolators));
break;
}
}
上面的代码,将会在Activity
中,4个场景间产生不同的过渡动画。
Transition Framework
获取当前scene
所有可见的view
然后计算这些view
跳转到下一个scene
所需的动画参数。
Layout changes
Transition Framework
也可以作用于View
的layout property
,只需输入想要改变的参数,Transition Framework
将会自定完成剩下的工作。
a)开启Delayed Transition
通过这一行代码,告诉Transition Framework
我们需要执行的UI
变化。
TransitionManager.beginDelayedTransition(sceneRoot);
b)改变View的layout properties
ViewGroup.LayoutParams params = greenIconView.getLayoutParams();
params.width = 200;
greenIconView.setLayoutParams(params);
改变view
的宽度属性使View
更加小,这个动作将会导致重新布局和测量,与此同时,Transition Framework
会记录开始值和结束值,并且相对应的创建从开始值到结束值的Transition Animation