有些技术长时间不用就忘记了,在工作中常常使用到Tween动画,今天在淘宝客户端看到Frame动画,一时想不起来怎么实现了,刚刚查了一下,发现很简单,现在写下来备忘。

frame动画:即顺序播放事先做好的图像,与放胶片电影类似。
开发步骤:
1.把准备好的图片放进项目res/drawable-hdpi下。
2.在项目的res目录下创建文件夹drawable,然后在drawable文件夹下面定义动画XML文件,
文件名称可以自定义。
3.为View控件绑定动画效果,调用代表动画的AnimationDrawable的start()方法开始动画。

第一步:新建一个Android工程命名为frame目录结构如下图:


第二步:在项目的res目录下创建文件夹drawable,然后在drawable文件夹下面定义动画XML文件:

 1 <? xml version="1.0" encoding="utf-8" ?>
 2 <!--
 3      根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画  
 4
 5      根标签下,通过item标签对动画中的每一个图片进行声明  
 6
 7  android:duration 表示展示所用的该图片的时间长度  
 8
 9 -->
10
11 < animation-list  xmlns:android ="http://schemas.android.com/apk/res/android"
12     android:oneshot ="false"
13      >
14
15      < item
16          android:drawable ="@drawable/pull_to_refresh_tmall_1"
17         android:duration ="150" />
18      < item
19          android:drawable ="@drawable/pull_to_refresh_tmall_2"
20         android:duration ="150" />
21      < item
22          android:drawable ="@drawable/pull_to_refresh_tmall_3"
23         android:duration ="150" />
24      < item
25          android:drawable ="@drawable/pull_to_refresh_tmall_5"
26         android:duration ="150" />
27      < item
28          android:drawable ="@drawable/pull_to_refresh_tmall_6"
29         android:duration ="150" />
30      < item
31          android:drawable ="@drawable/pull_to_refresh_tmall_7"
32         android:duration ="150" />
33      < item
34          android:drawable ="@drawable/pull_to_refresh_tmall_8"
35         android:duration ="150" />
36      < item
37          android:drawable ="@drawable/pull_to_refresh_tmall_9"
38         android:duration ="150" />
39
40 </ animation-list >


第三步:编写MianActivity类:


 1 package  cn.eoe.leigo.frame;
 2
 3 import  android.app.Activity;
 4 import  android.graphics.drawable.AnimationDrawable;
 5 import  android.os.Bundle;
 6 import  android.view.View;
 7 import  android.widget.ImageView;
 8
 9 public   class  MainActivity  extends  Activity  {
10    private ImageView iv;
11    private AnimationDrawable animationDrawable;
12
13    @Override
14    protected void onCreate(Bundle savedInstanceState) {
15        super.onCreate(savedInstanceState);
16        setContentView(R.layout.activity_main);
17
18        iv = (ImageView) findViewById(R.id.iv);
19        animationDrawable = (AnimationDrawable) iv.getBackground();
20    }

21
22    public void start(View v) {
23        animationDrawable.start();
24    }

25
26    public void stop(View v) {
27        animationDrawable.stop();
28    }

29
30}

31

运行上述工程查看效果图:

Frame动画_第1张图片