動畫的使用—Drawable Animation

Drawable Animation能夠稱爲幀動畫,由於它是經過每次播放一幀Drawable資源實現的。java

Drawable Animation算不上真正意義上的動畫,由於它的內部實現是經過定時發送消息更新一個Drawable,android

例如一個背景。因此使用這個動畫的時候更像是使用一個背景資源,只不過更新背景的動做不用咱們本身進行。app

也許正是由於這個緣由,android官方建議咱們將這個動畫資源放在drawable目錄。ide

 

使用幀動畫很是之簡單,只須要在drawable目錄定義個xml文件,佈局

使用animation-list標籤包裹全部組成這個動畫的圖片文件,設置播放速率。動畫

而後在java代碼中使用。spa

定義xml文件code

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!--每個 item 中包括一幀組成動畫的圖片 -->
    <item android:drawable="@drawable/a01" android:duration="80" />
    <item android:drawable="@drawable/a02" android:duration="80" />
    <item android:drawable="@drawable/a03" android:duration="80" />
    <item android:drawable="@drawable/a04" android:duration="80" />
    <item android:drawable="@drawable/a05" android:duration="80" />
    <item android:drawable="@drawable/a06" android:duration="80" />
    <item android:drawable="@drawable/a07" android:duration="80" />
    <item android:drawable="@drawable/a08" android:duration="80" />
    <item android:drawable="@drawable/a09" android:duration="80" />
    <item android:drawable="@drawable/a10" android:duration="80" />
    <item android:drawable="@drawable/a11" android:duration="80" />
    <item android:drawable="@drawable/a12" android:duration="80" />
    <item android:drawable="@drawable/a13" android:duration="80" />
</animation-list>

這樣就定義好了咱們的動畫資源,以後就是在activity中調用xml

package com.whathecode.drawableanimation;

import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MotionEvent;
import android.widget.ImageView;

public class MainActivity extends ActionBarActivity {

    private AnimationDrawable ad;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 主佈局文件實際上只是一個相對佈局和一個ImageView
         */
        setContentView(R.layout.activity_main);
        
        ImageView img = (ImageView) findViewById(R.id.ali);
        
        /**
         * 獲取動畫資源,由於他就是一個背景資源
         * 因此能夠使用getBackground獲取,而後強制轉換成AnimationDrawable
         * 也能夠這樣獲取動畫資源
         * ad = (AnimationDrawable) getResources().getDrawable(R.drawable.motion);
         * img.setBackgroundDrawable(ad);
         */
         img.setBackgroundResource(R.drawable.motion);
         ad = (AnimationDrawable)img.getBackground();
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch(event.getAction())
        {
        case MotionEvent.ACTION_UP:
            //播放動畫
            ad.start();
            return true;
        }
        return super.onTouchEvent(event);
    }
}

這些,就是AnimationDrawable的所有blog

AnimationDrawable

相關文章
相關標籤/搜索