一 帧动画介绍

帧动画 就类似于 电影那种一张图一张图的切换

XML代码

先通过XML配置好 需要切换的图片 和 执行是否循环 和执行时间等 文件放在res/drawable 目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<!--
oneshot代表着是否只展示一遍,false 不停的循环播放动画
android:duration 时间长度
-->
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true"
>
<item android:drawable="@drawable/icon6" android:duration="150"></item>
<item android:drawable="@drawable/icon5" android:duration="150"></item>
<item android:drawable="@drawable/icon4" android:duration="150"></item>
<item android:drawable="@drawable/icon3" android:duration="150"></item>
<item android:drawable="@drawable/icon2" android:duration="150"></item>
<item android:drawable="@drawable/icon1" android:duration="150"></item>
</animation-list>

JAVA调用XML开启动画

先创建一个IamgeView 将其背景设置成 之前配置好的xml

1
2
3
4
ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.animation1);
AnimationDrawable animationDrawable = (AnimationDrawable) animationIV.getDrawable();
animationDrawable.start();

注意事项

要在代码中调用 ImageView 的 setBackgroundResource 方法,如果直接在 XML 布局文件中设置其 src 属性当触发动画时会 ForceClose ;

在动画 start 之前要先 stop,不然在第一次动画之后会停在最后一帧,这样动画就只会触发一次;

正如SDK中所提到的,不要在 onCreate 中调用 start,因为 AnimationDrawable 还没有完全跟 Window 相关联,如果想要界面显示时就开始动画的话,可以在 onWindowFoucsChanged 中调用 start 。

属性动画

属性动画指的是 通过改变view 的属性来实现动画 跟补间动画本质的区别在于 补间动画 在改变的只是样子 例如将一个Button 放大 补间动画 放大后 其点击时间 并没有变 还是原来的大小

具体先看这篇文章 http://blog.csdn.net/lmj623565791/article/details/38067475

插值器

Interpolator class Resource ID 备注

  • AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 加速减速
  • AccelerateInterpolator @android:anim/accelerate_interpolator 加速
  • AnticipateInterpolator @android:anim/anticipate_interpolator 退小步往前冲
  • AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator 退小步冲过头退回
  • BounceInterpolator @android:anim/bounce_interpolator 球落地弹动效果
  • CycleInterpolator @android:anim/cycle_interpolator 周期重复
  • DecelerateInterpolator @android:anim/decelerate_interpolator 减速
  • LinearInterpolator @android:anim/linear_interpolator 匀速
  • OvershootInterpolator @android:anim/overshoot_interpolator 冲过头再退回