Android开发-动画 帧动画(Frame Animation)

273 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

上一篇简单介绍了下动画的类型,主要分为三类,今天主要介绍第一类,也就是帧动画(Frame Animation)。

帧动画(Frame Animation)

什么是帧动画,字面的意思也可以理解,就是一帧一帧的播放动画,其实就是我们将需要展示在用户面前的动画通过拆分成很多张图片,通过控制依次显示这些图片,然后呈现在我们眼前的就像看电影一样,形成一个动画。

帧动画的实现

帧动画的实现很简单,首先我们需要对我们实现的动画效果用图片的方式拆分出来,然后通过AnimationDrawable来加载这些图片,通过start和stop方法来控制动画的播放和停止。 1.首先我们定义出这些图片,然后在我们项目的res下创建一个anim的文件夹,再新建一个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/image_frame1"
        android:duration="80" />
    <item
        android:drawable="@drawable/image_frame2"
        android:duration="80" />
    <item
        android:drawable="@drawable/image_frame3"
        android:duration="80" />
    <item
        android:drawable="@drawable/image_frame4"
        android:duration="80" />
    <item
        android:drawable="@drawable/image_frame5"
        android:duration="80" />
   
</animation-list>

2.创建一个我们需要加载动画的类,FrameAnimationActivity,简单的加载一个xml,添加2个按钮,一个开始,一个停止,再定义一个ImageView用来展示动画就哦了,具体代码就不贴了,说下里面的AnimationDrawable的使用吧:


private AnimationDrawable frameAnim;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        frameAnim = (AnimationDrawable) frame_image.getBackground();
    }
    
    
@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_start:
                frameAnim.start();
                break;
            case R.id.btn_stop:
                frameAnim.stop();
                break;
        }
    }

具体的按钮初始化和布局文件就不贴了,使用起来是不是非常简单。

总结

基本上使用的方式就上面提到的,当然可以做到更高阶的使用,就是封装成一个自定义的view,然后直接传入一个需要加载的动画图片数据,就可以播放了,对外可以开放出开始和暂停的方法,有兴趣的可以研究一下,当然现在的安卓开发中已经很少用到帧动画了,大家可以选择了解下。