【安卓】动画

动画显示技术

帧动画

帧动画的实现

帧动画

​ 短时间内连续播放,在动画图形AnimationDrawable定义。

​ 一般用ImageView承载AnimationDrawable

​ 在安卓9后支持直接播放GIF动图

​ 淡入淡出动画

​ 过渡图形TransitionDrawable 处理两张图片之间的渐变显示

补间动画 Animation

补间动画(只用提供起始、终止状态)

  • 补间动画的种类

    • 灰度动画 AlphaAnimation。需设定视图透明度的前后数值
    • 平移动画 TranslateAnimation。左上角位置
    • 缩放动画 ScaleAnimation。指定横纵坐标的前后缩放比例
    • 旋转动画 RotateAnimation。指定视图的旋转角度
  • 补间动画的原理

    • 根据插值时间计算当前的状态值
    • 在宿主视图上使用该状态值进行变换操作
  • 集合动画

    • 多个补间动画联合起来的
    • 通过addAnimation方法添加补间动画
  • 在飞掠横幅中使用补间动画

    • viewFlipper 有四个操作动画的方法
    • 可以是的轮播效果更流畅

属性动画 ObjectAnimator

  • 属性动画的用法
    • 允许视图的所有属性都能实现渐变的动画效果,比如背景颜色,文字颜色,文字大小
    • 而补间动画只能设置透明度、旋转角度、xy轴的缩放比例、横纵坐标的平移距离
  • 属性动画组合AnimatorSet
  • 插值器和估值器
    • 插值器用来控制属性值的变化速率,也可以理解为动画播放的速度,默认是匀速播放。
    • 估值器专用于属性动画,描述属性的数值变化要采取的单位

矢量动画 vectorDrawable

  • 矢量图形,由多个向量拼接在一起,形成的矢量图形
    • 需要在build.gradle中添加“vectorDrawables.useSupportLibrary = true // 矢量图形的XML定义文件需要”
  • 矢量图形的结构定义
    • 有xml文件定义,可分为根标签,组标签,路径标签
    • 根标签,定义一个完整的矢量图形
    • 组标签,定义一组路径的共同行为,比如一起旋转,一起缩放,一起平移
  • 可缩放矢量图形SVG标记
    • path属性需要符合SVG标准
    • 每个命令,大写表示参数是绝对坐标,小写诗相对坐标
    • large-arc-flag 表示大弧标志、sweep-flag表示轨迹方向
  • 利用属性动画实现矢量动画
    • AnimatedVectorDrawable 是一个矢量动画类,需要通过属性动画、xml标签实现动画定义
    • 矢量动画只有三类属性可以用作动画
      • 变换类属性,包括透明度、旋转、x、y
      • 路径类属性
      • 修剪类属性,android:trimPathStart、android:trimPathEnd。可实现矢量图形逐步展开或者逐步消失的动画效果

动画的实现手段

  • 使用延时重绘
    • 代表技术为帧动画
  • 设置状态参数
    • 代表技术为补间动画和属性动画
  • 滚动器 Scroller
    • 为了解决拖拽产生的卡顿
posted @ 2020-12-31 15:31  ckxkexing  阅读(132)  评论(0编辑  收藏  举报