在前一篇文章中,我们初步了解android.transition框架并开始着手AndroidTransitionExample项目。今天,我们将继续进一步探索如何使用这些类,以及如何从xml文件中加载他们。
为了使用示例工程,我们可以参照前一篇文章中“使用GIT实战”章节。下面是文档给出的一些额外提示。
控制过度效果
让我们来看看如何控制过度效果。首先,我们要进行一下重构。提取goToScene
方法,而不是直接调用TransitionManager.go()
方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
; html-script: false ]... goButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TransitionManager.go(scene); //移除 goToScene(scene); } }); ... private void goToScene(Scene scene) { ChangeBounds changeBounds = new ChangeBounds(); Fade fadeOut = new Fade(Fade.OUT); Fade fadeIn = new Fade(Fade.IN); TransitionSet transition = new TransitionSet(); transition.setOrdering(TransitionSet.ORDERING_SEQUENTIAL); transition .addTransition(fadeOut) .addTransition(changeBounds) .addTransition(fadeIn); TransitionManager.go(scene, transition); } |
转到“extract method goToScene”:
1 |
; html-script: false ]git checkout 6ea37f7 |
效果是一样的。事实上,如果用AutoTransition效果
也一样。但是,这样我们有更多控制,因为这样能把transition集合里的组件绑定到我们的链接上。例如,我们可以改变动画持续的时间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
; html-script: false ]private void goToScene(Scene scene) { ChangeBounds changeBounds = new ChangeBounds(); changeBounds.setDuration(1000); Fade fadeOut = new Fade(Fade.OUT); fadeOut.setDuration(1000); Fade fadeIn = new Fade(Fade.IN); fadeIn.setDuration(1000); TransitionSet transition = new TransitionSet(); transition.setOrdering(TransitionSet.ORDERING_SEQUENTIAL); transition .addTransition(fadeOut) .addTransition(changeBounds) .addTransition(fadeIn); TransitionManager.go(scene, transition); } |
转到“slow motion transitions”:
1 |
; html-script: false ]git checkout fbcc465 |
因为某些原因,在开发者选项里的动画控制看起来并不能影响动画过度效果。
上面的代码让我们可以慢速查看动画。我们能控制的不仅仅只有过度的时间而已,还可以尝试添加一个内插程序。经典动画的原则之一说到:角色不能简简单单的就开始移动。他们先要展现出要移动的动作,然后移动,最后在停止之前完成动作(Overshoot)。使用内置的AnticipateOvershootInterpolator
能得到想要的效果。注意:我们放慢了边缘动画的变动效果,所以很容易看到效果。
1 2 3 4 |
; html-script: false6-building-animations-android-transition-framework-part-2/">bignerdranch。欢迎加入翻译组。 在前一篇文章中,我们初步了解android.transition框架并开始着手AndroidTransitionExample项目。今天,我们将继续进一步探索如何使用这些类,以及如何从xml文件中加载他们。 为了使用示例工程,我们可以参照前一篇文章中“使用GIT实战”章节。下面是文档给出的一些额外提示。 控制过度效果让我们来看看如何控制过度效果。首先,我们要进行一下重构。提取
转到“extract method goToScene”:
效果是一样的。事实上,如果用
转到“slow motion transitions”:
因为某些原因,在开发者选项里的动画控制看起来并不能影响动画过度效果。 上面的代码让我们可以慢速查看动画。我们能控制的不仅仅只有过度的时间而已,还可以尝试添加一个内插程序。经典动画的原则之一说到:角色不能简简单单的就开始移动。他们先要展现出要移动的动作,然后移动,最后在停止之前完成动作(Overshoot)。使用内置的
|