Android Transition 和 Activity & Fragment Transition详解(四)--执行一个Transition

来源:互联网 发布:小猪cms9.0源码 可用 编辑:程序博客网 时间:2024/04/30 02:42

这一章节展示如何使用系统内置的Transition(比如move、fade、resize等)来实现动画效果。在Transition框架中,是使用动画的方式由起点Scene到终点Scene的变化。动画是由Transition对象自动创建并通过TransitionManager来执行或者停止的。


上一章节中,我们学习了如何创建不同view hierarchy的Scene对象。起点Scene和终点Scene都被定义好之后,接下来就需要创建Transition对象,并将Scene对象传给Transition对象,同时在创建Transition时还要指定执行的是哪一种动画效果。创建Transition对象也是有两种方式:加载xml配置文件,或者java代码动态new对象

下表中列出了几个SDK中内置的Transition,可以直接在xml中通过以下几个标签来声明具体的Transition类型



加载xml配置文件创建Transition对象

通过这种方式创建Transition对象,可以在不修改Activity中的代码的情况下更改Transition属性。具体步骤如下:

1)在res文件夹中创建transition文件夹

2)在res/transition文件夹中,创建xml配置文件

3)在xml文件中添加相应的内置Transition标签(比如<fade>)

比如如下代码中,通过<fade>标签声明一个Fade Transition对象

res/transition/fade_transition.xml

<fade xmlns:android="http://schemas.android.com/apk/res/android" />
xml文件定义好之后,就可以在java代码中通过加载xml文件生成Transition对象,代码如下:

Transition mFadeTransition =        TransitionInflater.from(this).        inflateTransition(R.transition.fade_transition);
除了加载xml文件的方式,也可以调用Fade的构造器动态的new Fade对象,比如:

Transition mFadeTransition = new Fade();


执行一个Transition

当接收到一个用户事件时,你开一执行一个Transition播放一段动画效果。调用TransitionManager.go方法执行一个Transition效果,并传入Scene对象和Transition对象。代码如下:

TransitionManager.go(mEndingScene, mFadeTransition);
以上代码被调用之后,系统会在mEndingScene的根视图内执行mFadeTransition所定义的动画效果。每一个Transition都有两个Scene场景,一个起始场景和一个终止场景。但是在上述代码中并没有指定起始场景。系统会自动将之前Transition对象的ending Scene作为当前Transition的起始Scene。


执行多个Transition

同属性动画类似,我们可以一次执行多个Transition效果。比如,你在两个Scene之间转换时,一边移除几个Views另一边又添加了几个新的Views。这样的效果我们就可以使用Transition来完成。将移除的Views使用fade out Transition移出屏幕,同时将新添加的Views以movement的Transition效果展示到屏幕上。

通过以下代码,可以在xml文件中定义一个TransitionSet

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"    android:transitionOrdering="sequential">    <fade android:fadingMode="fade_out" />    <changeBounds />    <fade android:fadingMode="fade_in" /></transitionSet>
因为TransitionSet继承自Transition,因此获取TransitionSet对象跟获取Transition对象的方法一样

0 0