使用Android.Transition框架创建动画(2)

前一篇文章中,我们初步了解android.transition框架并开始着手AndroidTransitionExample项目。今天,我们将继续进一步探索如何使用这些类,以及如何从xml文件中加载他们。

为了使用示例工程,我们可以参照前一篇文章中“使用GIT实战”章节。下面是文档给出的一些额外提示。

控制过度效果

让我们来看看如何控制过度效果。首先,我们要进行一下重构。提取goToScene方法,而不是直接调用TransitionManager.go()方法:

转到“extract method goToScene”:

效果是一样的。事实上,如果用AutoTransition效果也一样。但是,这样我们有更多控制,因为这样能把transition集合里的组件绑定到我们的链接上。例如,我们可以改变动画持续的时间:

转到“slow motion transitions”:

因为某些原因,在开发者选项里的动画控制看起来并不能影响动画过度效果。

上面的代码让我们可以慢速查看动画。我们能控制的不仅仅只有过度的时间而已,还可以尝试添加一个内插程序。经典动画的原则之一说到:角色不能简简单单的就开始移动。他们先要展现出要移动的动作,然后移动,最后在停止之前完成动作(Overshoot)。使用内置的AnticipateOvershootInterpolator能得到想要的效果。注意:我们放慢了边缘动画的变动效果,所以很容易看到效果。

转到“use AnticipateOvershootInterpolator”:

在过度到第二场景后,如果你试着按下“执行转换按钮”会发现并没有什么发生。这是因为,唯一绑定OnClickListener(点击监听)的按钮在第一个layout里。要使第二个场景的按钮正常工作,我们需要另外加载不同场景的界面。

现在,我们有了第二视图,可以开启第二个按钮:

最终效果如下图所示:

transition_07

转到“add the return transition”:

用XML实现过度

到现在为止,我们看了在代码中使用转换框架。当然,也可以通过XML实现。KitK介绍了全新的资源文件夹过度方法,这样的文件夹保存了定义转换,甚至是场景映射的XML文件。

例如,使用XML来定义自定义的转换会这样写(使用slow_auto_transition.xml):

使用XML文件能简化我们goToScene方法:

现在运行这个项目,结果和之前的是完全相同的。

转到“inflate the transition from the XML file”:

使用XML进行过度管理

正如上文提及到的那样,可以通过XML文件增加一个完整的transition管理实例。它定义了从一个场景到另一个场景的转换。我们最后对工作做一点改变。下面是transition_manager.xml文件:

同样我们也修改一下layout,以便不用再在代码中修改button的链接方式:在第一层layout中为id为goButton的按钮添加android:onClick="goToScene2"函数。同样,在第二层layout中添加android:onClick="goToScene1"

我们会把大部分的代码放进TransistionActivity中,而TransitionFragment只用来加载视图:

TransitionActivity中添加实例变量:

TransitionActivityonCreate函数结束的地方增加下面的代码:

结束的时候,把下面两个函数加到TransitionActivity类:

最后可以得到相同的效果。

转到“load the transition manager from the XML file”:

尽情享受Transition功能吧!

1 收藏 评论

关于作者:Talisman_Lin

简介还没来得及写 :) 个人主页 · 我的文章 · 1

可能感兴趣的话题



直接登录
跳到底部
返回顶部