安卓動畫學(xué)習(xí)--幀動畫

安卓中的幀動畫是按順序預(yù)先設(shè)置好的一組連貫的圖片組合而成的動畫,類似于電影畫面。系統(tǒng)提供了AnimationDrawable來使用幀動畫。幀動畫的使用步驟比較簡單,通常有兩種方式,1是通過xml預(yù)先定義好,2是通過動態(tài)代碼加載相關(guān)的動畫資源。


第一種方式是通過xml定義幀動畫:
1:在res目錄下的Drawable資源文件下通過xml定義一個drawable文件.里面是一系列的圖片資源。類似于下面的frame_anim_3.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false"
    >
    <item android:drawable="@mipmap/page_loading_01" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_02" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_03" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_04" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_05" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_06" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_07" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_08" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_09" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_10" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_11" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_12" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_13" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_14" android:duration="100"/>
</animation-list>

<strong>注意:</strong>其中父標簽中的oneshot屬性表示的是重復(fù)播放還是只播放一次,當(dāng)其值為true時,動畫只播放一次;當(dāng)其值為false,動畫將無限循環(huán)播放;
子標簽中drawable=""表示圖片的資源,duration=""表示該幀畫面執(zhí)行的時長。
2:在代碼中設(shè)置相關(guān)資源文件,并啟動動畫。

animtion3= (ImageView) findViewById(R.id.animtion3);
animtion3.setBackgroundResource(R.drawable.frame_anim_3);//設(shè)置drawable資源
AnimationDrawable drawable3= (AnimationDrawable) animtion3.getBackground();
drawable3.start();//開始播放

第二種方式是動態(tài)代碼創(chuàng)建。如下:

animtion3= (ImageView) findViewById(R.id.animtion3);
drawable3=new AnimationDrawable();
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_01),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_02),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_03),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_04),100); 
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_05),100); 
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_06),100);  
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_07),100);   
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_08),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_09),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_10),100);  
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_11),100);  
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_12),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_13),100);       drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_14),100);
animtion3.setImageDrawable(drawable3);
drawable3.start();//開始播放

AnimationDrawable常用API:

void start() - 開始播放動畫

void stop() - 停止播放動畫

addFrame(Drawable frame, int duration) - 添加一幀,并設(shè)置該幀顯示的持續(xù)時間

void setOneShoe(boolean flag) - false為循環(huán)播放,true為僅播放一次

boolean isRunning() - 是否正在播放
frame.gif

下面是該例子的frame_anim_3.xml中的圖片;


page_loading_01.png
page_loading_02.png
page_loading_03.png

page_loading_04.png
page_loading_05.png
page_loading_06.png
page_loading_07.png
page_loading_08.png
page_loading_09.png
page_loading_10.png
page_loading_11.png
page_loading_12.png
page_loading_13.png
page_loading_14.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容