Android最新动画框架完全解析(二)——Transitions Framework(Transitions 框架)

前面一篇文章讲解了Android动画Animator,但是不知道你有没有发现,前面讲解的所有的动画都是针对某一Object来进行的,虽然我们可以对整个Layout添加动画效果,但这是先把整个layout看成一个整体,再对这个整体添加动画效果。当我们想同时对多个Object添加动画效果时又该怎么做呢?

先来看一下效果

效果图

为什么要使用Transitions:

  • ViewGroup级别的动画效果
  • 只需确定动画的开始和结束的状态就可以完成整个动画
  • 有可以直接使用的常用动画
  • 支持从资源文件(Resource)载入动画
  • 生命周期中有回调函数,可以更好的控制动画效果

Scenes

一个Scene保存了一个ViewGroup中所有元素的状。同时他还拥有一个关于这个ViewGroup的父ViewGroup的引用,这个父ViewGroup称为scene root。

Transitions

关于动画的信息都存在一个Transition 对象中。通过 TransitionManager 使用Transition中动画。Transitions 框架可以在两个不同的Scene或者同一Scene的不同元素之间使用动画。

限制

  • API Level 19 (Android 4.4.2)
  • 使用在SurfaceView上可能会出错
    SurfaceView 是在一个非UI线程上更新的,所以可能会更其他元素的动画不同步。
  • 使用在TextureView上可能会出错
  • 使用在继承自AdapterView的View,比如ListView上可能会出错。
  • 当你对TextView 使用动画的时候,里面的文字在动画没有结束之前可能会跑到其他地方。

创建Scene

Scene mAScene;
Scene mAnotherScene;

// Create the scene root for the scenes in this app
mSceneRoot = (ViewGroup) findViewById(R.id.scene_root);

// Create the scenes
mAScene = Scene.getSceneForLayout(mSceneRoot, R.layout.a_scene, this);
mAnotherScene =
    Scene.getSceneForLayout(mSceneRoot, R.layout.another_scene, this);

创建Scene Actions

Transitions 框架允许自定义进入和退出Scene时的Action。把自定义的Action定义成Runnable对象并把他们作为参数传到Scene.setExitAction() 或者 Scene.setEnterAction() 中。系统会在进入和退出的时候调用这两个方法。

创建Transition

从resource文件中创建Transition

步骤如下:

1 . 在项目中添加res/transition/目录
2 . 在目录中新建XML文件
res/transition/fade_transition.xml

<fade xmlns:android="http://schemas.android.com/apk/res/android" />

3 . 在Activity中加载

Transition mFadeTransition =
        TransitionInflater.from(this).
        inflateTransition(R.transition.fade_transition);

在代码中动态添加Transition

Transition 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值