欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android动画基础 -- 帧动画

程序员文章站 2022-03-01 20:52:33
...

Android的动画主要分为三类,分别是帧动画、补间动画和属性动画。

本篇博客来看帧动画的实现。

 

一、什么是帧动画

帧动画一般用来实现较为复杂的个性化动画,通过一系列的图片循环播放,形成视觉上的动画效果。

 

二、帧动画的特点

在使用帧动画的时候,一定要避免使用过大的图片,以免引起OOM。

帧动画的优点在于使用简单、方便。

 

三、如何使用

首先将动画资源,即每张图片资源放到drawable文件夹里,这里可以再网上随便照一张gif图,然后使用gif分解软件将gif分解成一张张图片即可

然后可以通过xml或者java代码进行设置

1)java代码方式


        AnimationDrawable animationDrawable = new AnimationDrawable();
        for (int i = 0; i <= 25; i++) {
            int id = getResources().getIdentifier("gif" + i, "drawable", getPackageName());
            Drawable drawable = getResources().getDrawable(id);
            animationDrawable.addFrame(drawable, 100);
        }

        
        //开启动画
        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                animationDrawable.setOneShot(true);
                iv.setImageDrawable(animationDrawable);
                // 获取资源对象
                animationDrawable.stop();
                 // 特别注意:在动画start()之前要先stop(),不然在第一次动画之后会停在最后一帧,这样动画就只会触发一次
                animationDrawable.start();
                // 启动动画
               
            }
        });

       
        //停止动画
        stopBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                animationDrawable.setOneShot(true);
                iv.setImageDrawable(animationDrawable);
                animationDrawable.stop();
            }
        });

2)xml方式

在res/anim的文件夹里创建动画效果.xml文件

然后设置动画资源

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true" // 设置是否只播放一次,默认为false
    >

// item = 动画图片资源;duration = 设置一帧持续时间(ms)
    <item android:drawable="@drawable/gif0" android:duration="100"/>
    <item android:drawable="@drawable/gif0" android:duration="100"/>
    <item android:drawable="@drawable/gif0" android:duration="100"/>
    ...
    <item android:drawable="@drawable/gif11" android:duration="100"/>
    <item android:drawable="@drawable/gif12" android:duration="100"/>
    <item android:drawable="@drawable/gif13" android:duration="100"/>
</animation-list>

最后在代码中设置启停

        //开始动画
        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                iv.setImageResource(R.drawable.你的路径);
                // 1. 设置动画
                animationDrawable = (AnimationDrawable) iv.getDrawable();
                // 2. 获取动画对象
                animationDrawable.start();
                // 3. 启动动画
            }
        });
        //停止动画
        stopBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
                iv.setImageResource(R.drawable.你的路径);
                // 1. 设置动画
                animationDrawable = (AnimationDrawable) iv.getDrawable();
                // 2. 获取动画对象
                animationDrawable.stop();
                // 3. 暂停动画
            }
        });

 

相关标签: Android 帧动画

上一篇: Java小节

下一篇: Android动画基础