Android中动画介绍

导读

  • 移动开发知识体系总章(Java基础、Android、Flutter)
  • Android 动画的分类介绍
  • Android中的基础动画 属性动画(Property Animation)
  • View Animation(视图动画)详解
  • Drawable Animation(帧动画)详解

Android 动画的分类

Android开发中,常用的动画有三种:

  • Property Animation(属性动画)
  • View Animation(视图动画)
  • Drawable Animation(帧动画)

Property Animation(属性动画)

属性动画是Android3.0版本推出的动画框架,可谓Tween动画的升级版,它不仅能实现所有Tween动画的功能,还有很强的拓展性。
属性动画从本质上已经完全摆脱了控件,虽然我们大多数情况下使用属性动画都是给控件做动画,但是属性动画的底层只是一个数值发生器,和控件没有直接关系。

在Tween动画中即使他的位置发生了变化,但是点击事件,监听 ,都还停留在原地,不会跟着控件位置的变化去跟着改变。
一个经典的问题就是一个Button从一个地方移动到另一个地方,点击事件还是在原来的地方。

而属性动画,顾名思义直接是改变的控件的属性。所以,所有使用Tween动画的场景都可以用属性动画来替代。属性动画还保留了Tween动画的监听属性,即使位置发生变化也不会影响它的使用。

Property Animation

属性动画的特性:

  • 支持对所有View能更新的属性的动画(需要属性的setXxx()和getXxx())。
  • 更改的是View实际的属性,所以不会影响其在动画执行后所在位置的正常使用。
  • Android3.0(API11)及以后出现的功能,3.0之前的版本可使用github第三方开源库nineoldandroids.jar进行支持。

属性动画的优缺点:

缺点:(3.0+API出现)向下兼容问题
优点:易定制,效果强


View Animation(视图动画、Tween动画)

视图动画即View动画也被称作补间动画(Tween动画),在Android1.0版本的时候就有了,Tween动画一般直接作用页面中的 View 上,实现基本的动画效果:平移、旋转、缩放、透明度、或前几者的组合。

View Animation
  • 渐变动画支持四种类型:平移(Translate)、旋转(Rotate)、缩放(Scale)、透明度(Alpha)
    • TranslateAnimation(平移动画)
    • RotateAnimation(旋转动画)
    • ScaleAnimation(缩放动画)
    • AlphaAnimation(透明度动画)
  • 只是显示的位置变动,View的实际位置未改变,表现为View移动到其他地方,点击事件仍在原处才能响应。
  • 组合使用步骤较复杂。
    • AnimationSet (动画集合)

View动画作用于视图整体,只需设定初始状态(关键帧)和结束状态(关键帧),中间的状态(变化过程)则由系统计算计算并补齐,这也就是为什么叫补间动画/Tween动画。

Tween动画的优缺点

优点:

使用/制作简单
效果流畅
文件小,占用内存少

缺点:

效果单一
扩展性差
只是在屏幕绘制上的动画,控件的属性并没有改变(如前面提到的Button从一个地方移动到另一个地方的问题)

更多关于View Animation(视图动画)的使用及详解


Drawable Animation(帧动画)

Drawable Animation

帧动画即Drawable动画,是在时间帧上逐帧绘制帧内容,由于是一帧一帧的画,所以逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容。就是逐帧显示定义好的一组图片或者Drawable资源,效果类似于范灯片,一张张地切换图片,不同于View动画,系统提供了另外一个类AnimationDrawable来使用帧动画。实际的开发中,帧动画使用的场景相对较少。

帧动画示意图(来源于OCNYang)
帧动画的优缺点

优点:

  • 有非常大的灵活性,表现任何想表现的内容,合于表演很细腻的动画
  • 适合设备的开机动画
  • 适合其“复杂”的效果,看似不可能完成的动画
    缺点:
  • 增加制作负担而且最终输出的文件量普遍较大,会占用较大空间,容易卡顿,容易引起OOM
  • 帧动画不能添加监听事件

更多关于Drawable Animation(帧动画)的使用及详解


文献:
https://www.jianshu.com/p/769242cba1f8
https://www.jianshu.com/p/0eb89d43eea4

你可能感兴趣的:(Android中动画介绍)