Animation动画主要有两种:帧动画(Frame Animation)和补间动画(Tween Animation)。
补间动画主要包括对位置、角度、尺寸等属性的变化,而帧动画则是通过若干帧图片轮流切换显示的。

1、帧动画
  按顺序显示事先准备好的图片,跟动漫类似。主要用到的类AnimationDrawable,每个帧都是AnimationDrawable对象。
定义帧动画可以在代码直接进行。也可以通过XML文件定义,定义帧动画的文件存放在res/anim目录下。XML指定帧出现的顺序
及每个帧的持续时间。

  帧动画XML主要标记和属性如下:

IOS animation 卡住了 animation播放哪个动画_fish


  需要强调的是:启动Frame Animation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中

AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。这里实在拖曳事件中实现的。

  AnimationDrawable的主要方法如下:

IOS animation 卡住了 animation播放哪个动画_android_02


  

  帧动画使用例子

完整帧动画XML(frame_ani.xml)代码:

1 <?xml version="1.0" encoding="utf-8"?>
 2  <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
 3      android:oneshot="false">
 4     <item android:drawable="@drawable/fish1" android:duration="200" android:visible="true"/>
 5     <item android:drawable="@drawable/fish1" android:duration="200" android:visible="true"/>
 6     <item android:drawable="@drawable/fish2" android:duration="200" android:visible="true"/>
 7     <item android:drawable="@drawable/fish3" android:duration="200" android:visible="true"/>
 8     <item android:drawable="@drawable/fish4" android:duration="200" android:visible="true"/>
 9     <item android:drawable="@drawable/fish5" android:duration="200" android:visible="true"/>
10     <item android:drawable="@drawable/fish6" android:duration="200" android:visible="true"/>
11     <item android:drawable="@drawable/fish7" android:duration="200" android:visible="true"/>
12     <item android:drawable="@drawable/fish8" android:duration="200" android:visible="true"/>
13     <item android:drawable="@drawable/fish8" android:duration="200" android:visible="true"/>
14  </animation-list>

启动帧动画JAVA代码:

1                 @Override    
2                 public void onClick(View v) {            //重写onClick方法
3                     ImageView iv = (ImageView)findViewById(R.id.iv);
4                     iv.setBackgroundResource(R.anim.frame_ani);
5                     AnimationDrawable ad = (AnimationDrawable)iv.getBackground();
6                     ad.start();        //启动AnimationDrawable
7                 }

点击按钮,启动帧动画,可以看见不同fish图片的切换,鱼儿在游动(自己脑补哈)。

IOS animation 卡住了 animation播放哪个动画_补间动画_03

 

2、补间动画
  补间动画作用于View视图,主要包括对View对象的位置、尺寸、旋转角度、透明度的变化。补间动画涉及的类主要有
Animation、AnimationSet等。
  补间动画同帧动画可以在代码直接进行。也可以通过XML文件定义,推荐用XML,因为这样可读性比较高和利于扩展。
XML文件存放在res/anim下。

  补间动画XML几种变化标记和属性如下:

IOS animation 卡住了 animation播放哪个动画_android_04


  公有属性如下:

IOS animation 卡住了 animation播放哪个动画_IOS animation 卡住了_05


  

  补间动画使用例子:

完整补间动画XML代码:

1 <?xml version="1.0" encoding="utf-8"?><!-- XML的版本以及编码方式 -->
 2 <set xmlns:android="http://schemas.android.com/apk/res/android"> 
 3   <alpha
 4     android:fromAlpha="0.0" 
 5     android:toAlpha="1.0" 
 6     android:duration="6000" 
 7   /> <!-- 透明度的变换 -->
 8   <scale
 9     android:interpolator= "@android:anim/accelerate_decelerate_interpolator" 
10     android:fromXScale="0.0" 
11     android:toXScale="1.0" 
12     android:fromYScale="0.0" 
13     android:toYScale="1.0" 
14     android:pivotX="50%" 
15     android:pivotY="50%"
16     android:fillAfter="false" 
17     android:duration="9000"
18   /> <!-- 尺寸的变换 -->
19   <translate
20     android:fromXDelta="30" 
21     android:toXDelta="0" 
22     android:fromYDelta="30"
23     android:toYDelta="0" 
24     android:duration="10000" 
25   /> <!-- 尺位置的变换 -->
26   <rotate
27     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
28     android:fromDegrees="0" 
29     android:toDegrees="+360" 
30     android:pivotX="50%" 
31     android:pivotY="50%"
32     android:duration="10000"
33   /> <!-- 旋转变换 -->
34 </set>

启动补间动画JAVA代码:

1             @Override
2             public void onClick(View v) {                //重写onClick方法
3                 ImageView iv = (ImageView)findViewById(R.id.iv);
4                 Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.tween_ani);
5                 iv.startAnimation(animation);            //启动动画            
6             }

点击按钮,启动补间动画,可以看见螃蟹从中心慢慢旋转显现出来。

IOS animation 卡住了 animation播放哪个动画_android_06

    

IOS animation 卡住了 animation播放哪个动画_fish_07