Android动画使用之帧动画

961 阅读2分钟
1. 前言

动画在安卓中,使用是非常常见的,比如网络请求时的loading,就是通过旋转实现的。 在安卓中,动画分为两大类, 分别是视图动画和属性动画。视图动画又分为帧动画和补间动画。这篇文章主要讲帧动画的使用。三种动画的使用文章地址如下:

  1. 帧动画
  2. 补间动画
  3. 属性动画

2. 介绍

帧动画,指的就是利用视觉停留的特点,把一张张静态的图片顺序播放,形成动画的效果。


3. 使用

image

3.1 在drawable目录创建xml文件,编写好帧动画的图片集合
<?xml version="1.0" encoding="utf-8"?>

<animation-list
    android:oneshot="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/loading_1" android:duration="200"></item>
    <item android:drawable="@drawable/loading_2" android:duration="200"></item>
    <item android:drawable="@drawable/loading_3" android:duration="200"></item>
    <item android:drawable="@drawable/loading_4" android:duration="200"></item>
    <item android:drawable="@drawable/loading_5" android:duration="200"></item>
    <item android:drawable="@drawable/loading_6" android:duration="200"></item>
    <item android:drawable="@drawable/loading_7" android:duration="200"></item>
</animation-list>

解释:

  • animation-list:图片集合的根节点。
  • oneshot:是否只播放一次,true表示只会播放一次,false表示一直循环播放
  • item: 指定每一帧的 图片(drawable="")和播放时间(duration="")
3.2 动画的开启和关闭
public class MainActivity extends BaseActivity {


    @BindView(R.id.iv)
    ImageView iv;

    AnimationDrawable animationDrawable = null;
    boolean isStart = false;

    @Override
    protected int setLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        // 获取动画对象
        animationDrawable = (AnimationDrawable) iv.getBackground();
    }

    
    @OnClick(R.id.iv)
    public void onViewClicked() {
        if (isStart) {
            stop();
        } else {
            start();
        }
    }

    //开启动画
    private void  start (){
        animationDrawable.start();
        isStart = true;
    }
    //关闭动画
    private void  stop (){
        animationDrawable.stop();
        isStart = false;
    }
}

解释:

  • view.getBackground():获取到动画对象,在布局文件中,给view的Background属性指定了动画资源。

4.总结
  • 准备好一连串的静态图片,在xml中定义好播放顺序和时间
  • 把定义好的xml动画文件设置给view的background属性
  • 通过获取的view的background获取到动画对象,调用start和stop方法来开启或者关闭动画。

5. 完整demo地址

6. 历史文章目录