Android中的动画

匿名 (未验证) 提交于 2019-12-02 23:04:42

Android动画

Android中的动画分为:View动画,帧动画,属性动画

  • View动画:让对象不断做图像变换(平移 缩放 旋转 透明度)从而产生动画效果,是渐进式动画
  • 帧动画:通过顺序播放一系列图片产生动画效果,图片过多过大会产生OOM
  • 属性动画:动态地改变对象的属性从而达到动画的效果

1. View动画

View动画的作用对象是View,支持4种动画效果:平移动画,缩放动画,旋转动画和透明度动画.
补间动画是指只要指定动画的开始,结束的“关键帧”,而动画变化的“中间帧”由系统计算并补齐.上面4种动画都属于补间动画.

1.1 View动画的分类

View动画的四种变换效果对应着Animation的四个子类,除了用代码来动态创建,也可以用XML格式来定义
< set > : 表示动画集合,对应AnimationSet类,可以包含多个动画
< translate >: 表示平移动画,对应TranslateAnimation
< scale >: 表示缩放动画,对应ScaleAnimation,默认轴点是View的中心
< rotate >: 表示在旋转动画,对应RotateAnimation
< alpha >: 表示透明度动画,对应AlphaAnimation
View还有一些常见的属性:

  • duration:动画的持续时间
  • fillAfter:动画结束以后View是否停留在结束位置

1.2 View动画的使用场景

  • LayoutAnimation:作用于ViewGroup,为ViewGroup指定一个动画,当子元素出场时都会具有这种动画效果,经常使用在ListView上
  • Activity的切换效果:调用overridePendingTransition(int enterAnim, int exitAnim)方法,必须在startActivity或finish之后调用才可以生效.
    • enterAnim ― Activity被打开时,所需的动画资源id
    • exitAnim ― Activity被暂停时,所需的动画资源id

2. 帧动画

帧动画是顺序播放一组预先定义好的图片,系统提供了一个类AnimationDrawable来使用帧动画,使用时要尽量避免使用过多尺寸较大的图片

3.属性动画

属性动画是API11新加入的特性,和View动画不同,属性动画可以对任何对象(对象的该属性有set方法和get方法)做动画.

3.1插值器和估值器

TimeInterpolator:时间插值器,根据时间流逝的百分比来计算出当前属性值改变的百分比. 系统预设的有LinearInterpolator(线性插值器: 匀速动画),AccelerateDecelerateInterpolator(加速减速插值器: 动画两头慢中间快),DecelerateInterpolator(减速插值器: 动画越来越慢)

TypeEvaluator:类型估值器,根据当前属性改变的百分比来计算改变后的属性值. 系统预设的有IntEvaluator(针对整型属性),FloatEvaluator(针对浮点型属性),ArgbEvaluator(针对Color属性)

属性动画中的插值器和估值器很重要,它们是实现非匀速运动的重要手段.

3.2 属性动画的基本使用

属性动画几个比较常用的类是ValueAnimator,ObjectAnimator,AnimatorSet,其中ObjectAnimator继承自ValueAnimator,AnimatorSet是动画集合.

属性动画的基本使用可以分为如下三个步骤:

  • 如果没有设置属性的初始值,系统会通过该属性的get方法获取初始值,所以在没有设置属性的初始值时,必须提供该属性的get方法,否则会Crash.
  • 在动画的播放过程中,属性动画会利用时间插值器获取属性值改变的百分比,然后再通过估值器计算出改变后的属性值.
  • 通过该属性的set方法将改变后的属性值设置到对象中.
文章来源: Android中的动画
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!