Android 逐帧动画

原理:

逐帧动画是最简单的一种动画。原理就是把几张图片连续显示出来,以达到动画的效果。就相当于下面这种手绘翻页动画啦~

 

实现:

1、需要建立一个animation-list来设置静态图片资源、持续时间和是否循环播放。在res下建立一个anim文件夹,然后新建一个intro5.xml文件

<?xml version="1.0" encoding="utf-8"?>
<!-- 指定动画循环播放 -->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <!-- 添加多个帧 -->
    <item android:drawable="@drawable/intro5" android:duration="400" />
    <item android:drawable="@drawable/intro51" android:duration="400" />
                                                                
</animation-list>
android:drawable="@drawable/intro5"是图片资源
android:duration="400"指的是这幅图片显示400毫秒
android:oneshot="false"表示循环播放

2、把动画资源intro5.xml设置到ImageView的背景图里面,以便AnimationDrawable的调用

<ImageView
    android:id="@+id/anim"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@anim/intro5"
    android:scaleType="center"
    />

在android:background="@anim/intro5"的地方设置第一步写的动画资源。当然,如果你想连续播放多个动画的话,可以写好几个动画资源,然后在java代码里不断设置ImageView的背景。

 

3、需要AnimationDrawable来控制逐帧动画的开始、结束等其他操作。

public class MainActivity extends Activity{
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button play = (Button)findViewById(R.id.play);
        Button stop = (Button)findViewById(R.id.stop);
        ImageView imageView = (ImageView)findViewById(R.id.anim);
        
        
        //获取AnimationDrawable动画对象
        final AnimationDrawable anim = (AnimationDrawable)imageView
            .getBackground();
        
        play.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //开始播放动画
                anim.start();                
            }            
        });
        
        stop.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //停止播放动画
                anim.stop();                
            }        
        });    
    
    }

}

AnimationDrawable除去开始播放动画和停止播放动画外还有一些操作,不过个人觉得几乎是用不上。

不过还是附上官网的链接吧:http://developer.android.com/guide/topics/graphics/drawable-animation.html

posted @ 2016-03-08 15:43  野狗道人  阅读(459)  评论(0编辑  收藏  举报