【安卓】动画
动画显示技术
帧动画
帧动画的实现
帧动画
短时间内连续播放,在动画图形AnimationDrawable定义。
一般用ImageView承载AnimationDrawable
在安卓9后支持直接播放GIF动图
淡入淡出动画
过渡图形TransitionDrawable 处理两张图片之间的渐变显示
补间动画 Animation
补间动画(只用提供起始、终止状态)
-
补间动画的种类
- 灰度动画 AlphaAnimation。需设定视图透明度的前后数值
- 平移动画 TranslateAnimation。左上角位置
- 缩放动画 ScaleAnimation。指定横纵坐标的前后缩放比例
- 旋转动画 RotateAnimation。指定视图的旋转角度
-
补间动画的原理
- 根据插值时间计算当前的状态值
- 在宿主视图上使用该状态值进行变换操作
-
集合动画
- 多个补间动画联合起来的
- 通过addAnimation方法添加补间动画
-
在飞掠横幅中使用补间动画
- viewFlipper 有四个操作动画的方法
- 可以是的轮播效果更流畅
属性动画 ObjectAnimator
- 属性动画的用法
- 允许视图的所有属性都能实现渐变的动画效果,比如背景颜色,文字颜色,文字大小
- 而补间动画只能设置透明度、旋转角度、xy轴的缩放比例、横纵坐标的平移距离
- 属性动画组合AnimatorSet
- 插值器和估值器
- 插值器用来控制属性值的变化速率,也可以理解为动画播放的速度,默认是匀速播放。
- 估值器专用于属性动画,描述属性的数值变化要采取的单位
矢量动画 vectorDrawable
- 矢量图形,由多个向量拼接在一起,形成的矢量图形
- 需要在build.gradle中添加“vectorDrawables.useSupportLibrary = true // 矢量图形的XML定义文件需要”
- 矢量图形的结构定义
- 有xml文件定义,可分为根标签
,组标签 ,路径标签 - 根标签,定义一个完整的矢量图形
- 组标签,定义一组路径的共同行为,比如一起旋转,一起缩放,一起平移
- 有xml文件定义,可分为根标签
- 可缩放矢量图形SVG标记
- path属性需要符合SVG标准
- 每个命令,大写表示参数是绝对坐标,小写诗相对坐标
- large-arc-flag 表示大弧标志、sweep-flag表示轨迹方向
- 利用属性动画实现矢量动画
- AnimatedVectorDrawable 是一个矢量动画类,需要通过属性动画、xml标签实现动画定义
- 矢量动画只有三类属性可以用作动画
- 变换类属性,包括透明度、旋转、x、y
- 路径类属性
- 修剪类属性,android:trimPathStart、android:trimPathEnd。可实现矢量图形逐步展开或者逐步消失的动画效果
动画的实现手段
- 使用延时重绘
- 代表技术为帧动画
- 设置状态参数
- 代表技术为补间动画和属性动画
- 滚动器 Scroller
- 为了解决拖拽产生的卡顿
skr