動畫的使用—Drawable Animation


Drawable Animation可以稱為幀動畫,因為它是通過每次播放一幀Drawable資源實現的。

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

例如一個背景。所以使用這個動畫的時候更像是使用一個背景資源,只不過更新背景的動作不用我們自己進行。

也許正是因為這個原因,android官方建議我們將這個動畫資源放在drawable目錄。

 

使用幀動畫非常之簡單,只需要在drawable目錄定義個xml文件,

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

然后在java代碼中使用。

定義xml文件

<?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中調用

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的全部

AnimationDrawable


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM