Android 动画系列一之帧动画

1. 前言

        在App开发中,添加上一些动画,会使我们的应用变得很酷很炫,Android中的动画 分为三大类,逐帧动画(Frame)以及补间动画(Tween),还有Android 3.0以后引入的属性动画 (Property), 我们本篇文章说一下帧动画,逐帧(Frame)动画是最容易理解的,它要求把动画的过程的每张静态图片都搜集起来,然后由Android来控制依次显示这些静态图片,再利用人眼"视觉暂留"的原理,给用户造成"动画"的错觉。逐帧动画的动画原理和放电影的原理是一样的。

2. 实现步骤

        Android中实现帧动画,一般我们会用到一个Drawable:AnimationDrawable,编写好Drawable后,然后代码中调用start()以及stop()开始或停止播放动画

        定义逐帧动画的格式 my_gif.xml



    
    
    
    
    

    //根据帧数添加
    ''''''''

        这里的android:oneshot是设置动画是否只是播放一次,true只播放一次,false循环播放

        android:duration 表示当前帧播放的时间

        需要指出的是AnimationDrawable代码的动画默认是不播放的,必须要在代码中启动才可以。

AnimationDrawable 提供了两个方法:

       start(): 开始播放动画

       stop(): 停止播放动画

一旦程序获取了AnimationDrawable对象之后,接下来就可以用ImageView把它显示出来。

在代码中习惯上把AnimationDrawable设置为ImageView的背景。

3. Demo例子

3.1  界面布局



    

3.2  主界面

 我们的MainActivity.java,这里在这里控制动画的开始以及暂停:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_start;
    private Button btn_stop;
    private ImageView img_show;
    private AnimationDrawable anim;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bindViews();
        //AnimationDrawable设置为ImageView的背景。
        anim = (AnimationDrawable) img_show.getBackground();
    }

    private void bindViews() {
        btn_start = (Button) findViewById(R.id.btn_start);
        btn_stop = (Button) findViewById(R.id.btn_stop);
        img_show = (ImageView) findViewById(R.id.img_show);
        btn_start.setOnClickListener(this);
        btn_stop.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_start:
                anim.start();
                break;
            case R.id.btn_stop:
                anim.stop();
                break;
        }
    }
}

你可能感兴趣的:(Android,App,android,Frame动画,帧动画)