Skip to content

Latest commit

 

History

History
83 lines (57 loc) · 2.93 KB

File metadata and controls

83 lines (57 loc) · 2.93 KB

《Android开发艺术探索》第七章读书笔记

Android 的动画可以分为 3 种:View 动画、帧动画和属性动画。

View 动画通过对场景里的对象不断做图像变换(平移、缩放、旋转、透明度)从而产生动画效果,

帧动画通过顺序播放一系列图像从而产生动画效果,可以简单理解为图片切换动画。

View 动画

名称 标签 子类 效果
平移动画 `` TranslateAnimation 移动 View
缩放动画 `` ScaleAnimation 放大或缩小 View
旋转动画 `` RotateAnimation 旋转 View
透明度动画 `` AlphaAnimation 改变 View 透明度

AnimationUtils.loadAnimation()可以用来加载 XML 中定义的 View 动画。

自定义 View 动画

继承 Animation 这个抽象类,然后重写它的 initialize()applyTransformation() 方法,在 initialize() 方法中做一些初始化工作,在 applyTransformation() 中进行相应的矩阵变换即可,很多时候需要采用 Camera 来简化矩阵变换的概念。

帧动画

帧动画是顺序播放一组预先定义好的图片。系统提供了 AnimationDrawable 来使用帧动画。首先需要通过 XML 定义一个 AnimationDrawable,然后将上述的 Drawable 作为 View 的背景并通过 Drawable 来播放动画即可。

AnimationDrawable drawable = (AnimationDrawable)view.getBackground();
drawable.start();

属性动画

属性动画可以对任意对象的属性进行动画,而不仅仅是 View,动画默认时间间隔 300ms,默认帧率 10ms/帧。

工作原理

属性动画要求动画作用的对象提供该属性的 set 方法,属性动画根据传递的该属性的初始值和最终值,以动画的效果多次区调用 set 方法。每次传递给 set 方法的值都不一样,随着时间的推移,所传递的值越来越接近最终值。如果动画的时候没有传递初值,那么还要提供 get 方法,因为系统要获取属性的初始值。

使用动画的注意事项

  1. OOM 问题

  2. 内存泄漏

  3. 兼容性问题

  4. View 动画的问题

View 动画是对 View 的影像做动画,并不是真正的改变 View 的状态,因此有时候会出现动画完成后 View 无法隐藏的问题,即 setVisibility(View.GONE) 失效了,这个时候只要调用 view.clearAnimation() 清楚了 View 动画即可解决问题。

  1. 不要使用 px

在进行动画的过程中,要尽量使用 dp,使用 px 会导致在不同的设备上有不同的效果。

  1. 动画元素的交互

  2. 硬件加速

在使用动画的过程中,建议开启硬件加速,这样会提高动画的流畅性。