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

Android中实现一个简单的逐帧动画(附代码下载)

程序员文章站 2022-04-16 08:16:30
场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画。 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 首先准备一组不同表情的照片,放在res/drawab ......

场景

android中的逐帧动画,就是由连续的一张张照片组成的动画。

效果

Android中实现一个简单的逐帧动画(附代码下载)

 

 

Android中实现一个简单的逐帧动画(附代码下载)

注:

博客:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/img001" android:duration="60"/>
    <item android:drawable="@drawable/img002" android:duration="60"/>
    <item android:drawable="@drawable/img003" android:duration="60"/>
    <item android:drawable="@drawable/img004" android:duration="60"/>
    <item android:drawable="@drawable/img005" android:duration="60"/>
    <item android:drawable="@drawable/img006" android:duration="60"/>
</animation-list>

 

这里是逐帧动画,所以节点是animation-list 。

然后来到布局文件,将布局设置为linearlayout并添加id属性,并且设置背景为上面添加的动画资源文件

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:id="@+id/linearlayout"
    android:orientation="vertical"
    android:background="@drawable/fairy"
    android:layout_height="match_parent"
    tools:context=".mainactivity">

 

</linearlayout>

 

然后来到对应的activity,创建标识变量flag,然后获取animationdrawable对象,并且为布局管理器添加单击事件。从而控制动画的停止和播放。

package com.badao.animationtest;

import androidx.appcompat.app.appcompatactivity;

import android.graphics.drawable.animationdrawable;
import android.os.bundle;
import android.view.view;
import android.widget.linearlayout;

public class mainactivity extends appcompatactivity {

    private boolean flag = true;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        linearlayout linearlayout= (linearlayout) findviewbyid(r.id.linearlayout); //获取布局管理器
        //获取animationdrawable对象
        final animationdrawable anim= (animationdrawable) linearlayout.getbackground();
        linearlayout.setonclicklistener(new view.onclicklistener() {  //为布局管理器添加单击事件
            @override
            public void onclick(view v) {
                if(flag){
                    anim.start(); //开始播放动画
                    flag=false;
                }else {
                    anim.stop();  //停止播放动画
                    flag=true;
                }
            }
        });
    }
}

 

代码下载

https://download.csdn.net/download/badao_liumang_qizhi/12097211