前言

最近工作上有动画的需求,完成计划呢,又很难找,曾经看了好几个动画相关的文章,感觉总是差点什么,总有种如同会了,可是又不怎么会的感觉,趁这次项目需求就看了三天的官网关于动画的介绍(还没看完),由所以在工作日看的,进展又赶,清明就加了三天班。

别的,Compose动画还没看,这里就不写了。

文档链接:developer.android.com/develop/ui/… ,我看的英文版,因为某次发现英文版新内容比中文版多,而且读起来会流畅一些。

第一节 动画的介绍(Introduction to animations)

文档这一节有五个末节,看起来是将动画分成了五种类别,可是有些动画在这节是没有的。这五个末节分别是:bitmaps动画、UI能见度与移动动画、根据物理的动画、layout改动动画和activity之间的动画

1. bitmaps动画(Animate bitmaps)

为了将相似icon或插图的bitmap图形动起来,需要运用drawable animation APIs。一般,这些animations被界说为静态的drawable资源,但你也能够在运行时界说这种动画行为,也便是代码中动态界说。这种动画作用如下图所示:

Android动画(一)——动画的介绍

2. UI能见度与移动动画(Animate UI visibility and motion)

这节比较长,就长话短说了。第一个天然段疏忽,第二个天然段介绍了特点动画,这里叫做property animation system,一个从Android3.0(API level 11)开始的玩意儿。

特点动画很多人都有介绍,能完成很多的动画功能,比如说view的显隐、缩放、移动、旋转,除了这四个,其他特点的改动动画也能够做,自界说的变量也行。特点,便是一个对象的字段。与特点动画关联的是view动画,这节并没有介绍。此节动画详细作用看下图:

Android动画(一)——动画的介绍

第三天然段介绍的动画乍看起来不太明白,其实直接点进链接跳过去就知道了,内容很少,详见第六节。

3. 根据物理的动画(Physics-based motion)

截止到现在我看到的这块,只看到了两个有物理作用的动画API,分别是Spring animation和Fling animation,文档里也给了不带物理作用和带物理作用的差异,分别如下两图所示:

Android动画(一)——动画的介绍
Android动画(一)——动画的介绍

详细的就不介绍了,时刻也不早了,就说两个点;

  1. 这节最终一个天然段提到了DynamicAnimation,不要认为有第三个根据物理的动画API(第三方或许自己完成那就有),这是个虚基类,点进去看就Spring animation和Fling animation两个子类。
  2. 这个文档里两个API介绍被打散到两节里面了。

4. layout改动动画(Animate layout changes)

在Android 4.4 (API level 19) 新增了一个叫做transition framework的东西。运用这个东西呢,需要指定开始和完毕的layout,以及动画的类型,体系会自动计算和履行两个layout之间的动画。详细作用下图所示:

Android动画(一)——动画的介绍

开始和完毕的layout存储在各自的Scene中,尽管一般来说开始Scene由当时layout自动决议。你能够运用Transition来告诉体系想要什么类型的动画,然后调用TransitionManager.go()就会履行动画啦。

5. activity之间的动画(Animate between activities)

这个是在Android 5.0 (API level 21)新增的。这个动画也是根据transition framework的,和上一个点相同,不同的是,这个能完成activity之间的layout切换动画。

举例的应用场景便是不同activity之间跳转时的共享View动画。详细作用和上一个点图片中的动画共同。

一般来说,需要在startActivity跳转的时候携带一个由ActivityOptions转换来的bundle,而这个options通过 ActivityOptions.makeSceneTransitionAnimation()来获取,这个options会说明哪个view是共享的,然后transition framework就会在动画的时候将它们联系起来。

结尾

此节还有一些内容没有说,比如补间动画(tween animation)、ViewPropertyAnimator、ViewAnimationUtils(尽管这玩意儿就一个动画办法…);别的还有一些不常用的xml中的动画(对我而言),比如selector中指定动画、animated-selector;再之外还有便是Keyframe(第一次见到这玩意儿,特点动画的内容)。

转述个文档都分隔两天来写,当初看这块是因为觉得MotionLayout或许对我项目有帮助,结果没时刻看到MotionLayout,直接用view动画来做了。动画出完出蓝牙,嗯,先画个饼。