《Android开发艺术探索》读书笔记--第7章 Android动画深入分析

文章目录

    • 7.1 View 动画
      • 7.1.2 自定义 View 动画
      • 7.1.3 帧动画
    • 7.2 View动画的特殊使用场景
      • 7.2.1 LayoutAnimation
      • 7.2.2 Activity切换效果
    • 7.3 属性动画
      • 7.3.1 使用属性动画
      • 7.3.2 理解插值器和估值器
      • 7.3.3 属性动画的监听器
    • 7.3.4 对任意属性做动画
      • 7.3.5 属性动画的工作原理
    • 7.4 使用动画的注意事项

  1. View 动画、帧动画、属性动画

7.1 View 动画

  1. 帧动画也属于 View 动画。
名称 名称 标签 作用
TranslateAnimation 平移 移动
ScaleAnimation 缩放 缩放
RotateAnimation 旋转 旋转
AlphaAnimation 透明度 透明度

7.1.2 自定义 View 动画

  1. 继承 Animation 重写 initialize、applyTransformation(相应的矩阵变换)

7.1.3 帧动画

  1. 顺序播放一组预先定义好的图片,类型电影播放
  2. AnimationDrawable
  3. 比较容易引起 OOM,避免使用过多尺寸较大的图片

7.2 View动画的特殊使用场景

7.2.1 LayoutAnimation

  1. 作用yu ViewGroup,子元素出场都带有动画效果
<layoutAnimation
  android:delay = "0.5"
  android:animationOrder = "normal|reverse|random"
  android:animation="" 指定入场动画

1.通过 android:layoutAnimation 使用
2.LayoutAnimationController 使用
  1. 动画默认刷新率为 10ms/帧

7.2.2 Activity切换效果

  1. overridePendingTransition
  2. 必须位于 startActivity 或 finish 后面

7.3 属性动画

  1. 是 API 11 新加入特性

7.3.1 使用属性动画

  1. 可以对任意对象的属性进行动画,不仅是 View
ObjectAnimator.ofFloat(myObject,"translationY",-myObject.getHeight()).start();
  1. 使用
AnimatorInflater.loadAnimator

7.3.2 理解插值器和估值器

  1. TimeInterpolator:时间插值器,根据时间流逝的百分比计算出当前属性值改变的百分比,预置(LinearInterpolator、AccelerateDecelerateInterpolator、DecelerateInterpolator)
  2. TypeEvaluator:类型估值算法,估值器,根据当前属性改变的百分比计算改变后的属性值,预置(IntEvalurot、FloatEvaluator、ArgbEvaluator)
  3. 属性动画要求对象必需有 set、get(可选)
  4. 自定义插值器要实现 Interpolator 或者 TimeInterpolator
  5. 自定义估值器要实现 TypeEvaluator

7.3.3 属性动画的监听器

  1. AnimatorupdateListener
  2. AnimatorListener

7.3.4 对任意属性做动画

  1. 条件
    1.必需提供 setXXX 方法,如果没有初始值,还需要提供 getXXX
    2.改变必需通过某种方法反映出来,比如会带来 UI 改变之类
  2. 一定要使用属性动画
    1.加上 get 和 set 方法
    2.用一个类来包装原始对象,间接提供 get 和 set 方法
    3.采用 ValueAnimator(本身不作用于任何对象),监听动画过程,自己实现属性的改变

7.3.5 属性动画的工作原理

  1. 属性动画要求动画作用的对象提供该属性的 set 方法,属性动画根据你传递的该属性的初始值和最终值,以动画的效果多次调用 set 方法。随着时间的推移,所传递的值越来越接近最终值。

7.4 使用动画的注意事项

事项
OOM 主要出现在帧动画中,图片数量多,且比较大容易出现
内存泄露 无限循环动画,要在 Activity 退出是及时停止
兼容性问题 3.0以下有兼容性问题
View动画问题 1.只是对View做影像,没有改变 View的位置,有时候 setVisibility(GONE) 失效,要使用 view.clearAnimation
不要使用 px 兼容问题
动画元素交互 3.0以前,无法交互
硬件加速 使用动画过程中,建议开启硬件加速,提高动画流畅性能

你可能感兴趣的:(读书笔记,#,Android开发艺术探索)