Android學(xué)習(xí)筆記(八)| Android動(dòng)畫(huà)(中)—— 幀動(dòng)畫(huà)

參考書(shū)籍:《Android開(kāi)發(fā)藝術(shù)探索》 任玉剛
如有錯(cuò)漏,請(qǐng)批評(píng)指出!

幀動(dòng)畫(huà)是順序播放一組預(yù)先定義好的圖片。不同于View動(dòng)畫(huà),系統(tǒng)提供了一個(gè)類(lèi) AnimationDrawable 來(lái)使用幀動(dòng)畫(huà),它的使用很簡(jiǎn)單,下面來(lái)看:

  1. 首先當(dāng)然是要準(zhǔn)備一組圖片素材:

    圖片來(lái)源: https://blog.csdn.net/aminfo/article/details/7847761
    這里我提供一個(gè)素材下載地址:https://pan.baidu.com/s/1655oSJV66fNZu-LJ9NiPBg 提取碼:un0d

  2. 在 res/drawable 目錄下定義一個(gè) Drawable resource file,要定義幀動(dòng)畫(huà),我們需要用到 <drawable-list/> 標(biāo)簽

    <?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/draw1" android:duration="200"/>
        <item android:drawable="@drawable/draw2" android:duration="200"/>
        <item android:drawable="@drawable/draw3" android:duration="200"/>
        <item android:drawable="@drawable/draw4" android:duration="200"/>
        <item android:drawable="@drawable/draw5" android:duration="200"/>
        <item android:drawable="@drawable/draw6" android:duration="200"/>
    </animation-list>
    

    這里涉及到 <drawable-list/> 標(biāo)簽的一個(gè)常用屬性:

    • oneshot: 它的可選值是bool型,true 表示只播放一次,停在最后一幀,false 表示 無(wú)限循環(huán)播放(默認(rèn)為false)。

    接下來(lái)就是添加每一幀的item列表,對(duì)應(yīng)兩個(gè)屬性:

    • drawable: 素材圖片
    • duration: 當(dāng)前幀播放時(shí)間
  3. 最后就是將我們定義的 AnimationDrawable 作為View的背景并通過(guò) Drawable 來(lái)播放動(dòng)畫(huà)

    public class DrawableAnimActivity extends AppCompatActivity {
    
        @BindView(R.id.draw_anim)
        ImageView imgAnim;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_drawable_anim);
            ButterKnife.bind(this);
    
            imgAnim.setBackgroundResource(R.drawable.draw_anim);
            AnimationDrawable drawable = (AnimationDrawable)imgAnim.getBackground();
            drawable.start();
        }
    }
    

下面來(lái)看一下最終效果:

幀動(dòng)畫(huà)的使用很簡(jiǎn)單,但是比較容易引起 OOM,因此在使用時(shí)要盡量避免使用過(guò)多尺寸較大的圖片。


上一篇:Android學(xué)習(xí)筆記(七)| Android動(dòng)畫(huà)(上)—— View動(dòng)畫(huà)
下一篇:Android學(xué)習(xí)筆記(九)| Android動(dòng)畫(huà)(下)—— 屬性動(dòng)畫(huà)

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

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

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