您的位置:华清远见教育科技集团 >> Android资料 >> Android开发之Frame动画实现方法  
 
Android开发之Frame动画实现方法
分享到:

Frame动画是顺序播放图片来产生动画效果的,类似电影。例如,要实现一个人物走动的动画,可以通过三张图片来实现,第一张两脚都着地,第二张左脚着地,第三张右脚着地。然后,按顺序播放就实现任务行走的动画效果了。

Frame动画是通过AnimationDrawable类实现的,该类中的两个重要方法是start()和stop(),分别用来开始和停止动画。动画一般通过XML配置文件来进行配置,在工程的res/anim/目录下创建一个XML配置文件,该配置文件中有一个<animation-list>根元素和若干个<item>子元素。

下面通过一个实例来演示Frame动画的实现。该实例通过顺序播放6张图片来实现一个人跳起来的动画效果。6张静态图片如图1所示。


图1 Frame动画静态图片

实例步骤说明如下:
    (1)创建一个工程“Graphic_Animation2”。
    (2)在该工程的res/drawable/目录下添加上述6张资源文件。
    (3)在该工程的res/anim/目录下创建一个XML动画文件,代码如代码清单1所示。

代码清单1 jump.xml


<animation-list xmlns:android="//schemas.android.com/apk/res/android"
        android:oneshot="true">
        <item android:drawable="@drawable/p01" android:duration="500"/>
        <item android:drawable="@drawable/p02" android:duration="500"/>
        <item android:drawable="@drawable/p03" android:duration="500"/>
        <item android:drawable="@drawable/p04" android:duration="500"/>
        <item android:drawable="@drawable/p05" android:duration="500"/>
        <item android:drawable="@drawable/p06" android:duration="500"/>
    </animation-list>

(4)在工程的res/layout/目录下创建一个main.xml布局文件,在该布局文件中添加两个Button:一个用来开始动画,另一个用来停止动画。添加一个ImageView显示动画。设置ImageView的背景色android:background="@anim/dance"。代码如代码清单2所示。

代码清单2 jump.xml


<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@anim/jump"
            android:id="@+id/ImageView01"></ImageView>

        <Button
            android:layout_height="wrap_content"
            android:text="Start..."
            android:layout_width="wrap_content"
            android:id="@+id/Button01"></Button>
        <Button
            android:layout_height="wrap_content"
            android:text="Stop..."
            android:layout_width="wrap_content"
            android:id="@+id/Button02"></Button>
    </LinearLayout>

(5)在MainActivity类中声明Button、ImageView和AnimationDrawable实例,在onCreate()方法中将其实例化。获得ImageView视图的背景色,并转化为AnimationDrawable对象。为按钮添加单击事件监听器,在事件方法中分别开始动画和结束动画。

代码清单3 MainActivity.java


package cn.com.farsight.graphic_Animation;

    import android.app.Activity;
    import android.graphics.drawable.AnimationDrawable;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;

    public class MainActivity extends Activity {
        //声明使用到的Button视图组件
        private Button b1,b2;
        //声明使用到的ImageView组件
        private ImageView myImage;
        //声明AnimationDrawable
        private AnimationDrawable jumpAnimation;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //实例化视图组件
            myImage=(ImageView) findViewById(R.id.ImageView01);
            b1 = (Button) findViewById(R.id.Button01);
            b2 = (Button) findViewById(R.id.Button02);

            //获得背景色,并转换为AnimationDrawable对象
            jumpAnimation = (AnimationDrawable) myImage.getBackground();

            //为按钮添加监听事件
            b1.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //开始动画
                    jumpAnimation.start();
                }
            });
            b2.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //停止动画
                    jumpAnimation.stop();
                }
            });
        }
    }

程序运行结果如图2所示。

 
图2 Frame动画效果

 更多相关文章

·Android开发之Tween动画实现方法
·Android 属性动画开发源码
·Android帧动画实例详解
·Android 控件动画效果的实现
·Android中的四种补间动画