Android繪圖動畫—Drawable Animation

來源:互聯網
上載者:User

本文譯自:http://developer.android.com/guide/topics/graphics/drawable-animation.html

繪圖動畫會讓你依次的載入一系列的繪圖資源來建立一個動畫。這種動畫是一種傳統動畫,它是用不同的圖片序列來建立並依次播放的,看上去像放電影。AnimationDrawable類是繪圖動畫的基類。

你能夠使用AnimationDrawable類的API在代碼中定義動畫的幀,但是,用一個單獨的定義了組成動畫幀的列表的XML來完成動畫會更加簡單。這種類型動畫的XML檔案要放在你的Android工程的res/drawable/目錄中。這種情況下,指令是動畫的播放順序和每一幀動畫的播放時間。
這個動畫XML檔案是由一個<animation-list>根項目和一系列的定義每一幀的<item>子項目組成。<item>元素定義了每一幀的繪圖資源和播放時間長度。以下是繪圖動畫的一個樣本XML檔案:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"

   
android:oneshot="true">

   
<item android:drawable="@drawable/rocket_thrust1" android:duration="200" />

   
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />

   
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />

</animation-list>

這個動畫只有三個幀。通過把第一幀動畫的android:oneshot屬性設定為true,讓動畫播放一次,然後在最後一幀停止。如果它被設定為false,那麼動畫將會迴圈播放。使用這個儲存在工程的res/drawable/目錄中的rocket_thrust.xml檔案,能夠把一個背景圖片添加到一個View對象上,然後播放動畫。下面樣本的Activity動畫中添加了一個ImageView對象,並且在螢幕被觸摸時動畫開始播放:

AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {

 
super.onCreate(savedInstanceState);

 
setContentView(R.layout.main);

 
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);

 
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

 
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();

}

public boolean onTouchEvent(MotionEvent event) {

 
if (event.getAction() == MotionEvent.ACTION_DOWN) {

   
rocketAnimation.start();

   
return true;

 
}

 
return super.onTouchEvent(event);

}

注意,在Activity的onCreate()方法執行期間,不能調用AnimationDrawable對象上的start()方法,這是至關重要的,因為AnimationDrawable對象在這時還沒有跟視窗綁定。如果要立即播放動畫,不需要互動,你可以在Activity的onWindowFocusChanged()回調方法中調用star()方法,onWindowFocusChanged()方法會在視窗擷取焦點時被Android系統調用。

關於XML文法、可用的標籤屬性的更多資訊,請看“動畫資源”(http://developer.android.com/guide/topics/resources/animation-resource.html)

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.