Open macoal opened 7 years ago
Transition Framework 也可以在当前活动的布局变化中使用动画元素。 Transition 可以发生在 scene 之间。scene 只是一个定义静态UI的常规布局,你可以将一个场景切换到另一个,并且 Transition Framework 将会将两者用动画的形式展现。
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;
}
}
Transition Framework 将会得到所有的可见 view 。根据下一场景,计算并显示从当前场景到下一场景过程中任何必要的动画。
TransitionManager.beginDelayedTransition(sceneRoot);
b) 改变视图布局属性
ViewGroup.LayoutParams params = greenIconView.getLayoutParams();
params.width = 200;
greenIconView.setLayoutParams(params);
Transition 的简单介绍就已经介绍完毕了。
2016年9月4日01:48:20
Transition 主要在三个场景做件事
一、Activity间跳转
在Activity A跳转B的时候,会调用定义的transition。在 android.transition.Transition包中有三种预定义的转变:Explode(爆破?)、Slide(滑动)和Fade(淡化)。可以通过XML或代码来定义转变。
实现
在res/transition 定义XML文件
你也可以定义你的应用中默认的enter、exit和shared element 转换
为了达到欺骗目的,你需要设置同样的 android:transitionName 。不同的 view 可能有不同的参数,但这个参数一定是一致的。
Fragment 间的 shared elements
在 Fragment 中使用 shared elements 和在 Activity 中非常相似。a)和b)是一样的,只有c)不一样。
你需要在 FragmentTransaction 包含 shared element transition 信息
你可以定义 enter 和 exit transition 彼此重叠
From Android documentation: