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