Android中實現一個簡單的逐幀動畫(附代碼下載)

場景

Android中的逐幀動畫,就是由連續的一張張照片組成的動畫。android

效果

 

 

注:編程

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公衆號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。 app

實現

首先準備一組不一樣表情的照片,放在res/drawable下,而後在此目錄下新建動畫資源文件fairy.xmlide

<?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對象,而且爲佈局管理器添加單擊事件。從而控制動畫的中止和播放。spa

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.net

相關文章
相關標籤/搜索