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

逐帧动画-简单使用

程序员文章站 2022-03-25 13:49:54
...

1.实现逐帧动画方式有2种

A.xml资源文件方式

B.代码方式

2.xml资源文件方式

先在res/drawable中新建一个xml文件,还要准备三张图片:a/b/c

<?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/a"
        android:duration="120" /> <!--duration:每一帧播放时长-->
    <item
        android:drawable="@drawable/b"
        android:duration="120"/>
    <item
        android:drawable="@drawable/c"
        android:duration="120"/>
</animation-list> <!--逐帧动画-资源方式-->

然后在代码中设置

//资源方式-逐帧动画
        imag1.setBackgroundResource(R.drawable.frame_animation); //资源方式必须用该方法,不用setBackground
        kz1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AnimationDrawable animationDrawable1 = (AnimationDrawable) imag1.getBackground();
                if (tag1 == 0) {
                    animationDrawable1.start(); //控制
                    tag1 = 1;
                } else {
                    animationDrawable1.stop();
                    tag1 = 0;
                }
            }
        });

3.代码方式:

//逐帧动画-代码方式A
        AnimationDrawable animationDrawable2 = new AnimationDrawable();
        Drawable drawablea = getResources().getDrawable(R.drawable.a);
        Drawable drawableb = getResources().getDrawable(R.drawable.b);
        Drawable drawablec = getResources().getDrawable(R.drawable.c);
        animationDrawable2.addFrame(drawablea, 120); //添加一帧动画,并给定时长
        animationDrawable2.addFrame(drawableb, 120);
        animationDrawable2.addFrame(drawablec, 120);

//逐帧动画-代码方式A
        imag2.setBackground(animationDrawable2);
        animationDrawable2.setOneShot(false);
        kz2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AnimationDrawable animationDrawable2 = (AnimationDrawable) imag2.getBackground();
                if (tag2 == 0) {
                    animationDrawable2.start();
                    tag2 = 1;
                } else {
                    animationDrawable2.stop();
                    tag2 = 0;
                }
            }
        });

4.ok