Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Animation 動畫Demo(Frame逐幀動畫)

Android Animation 動畫Demo(Frame逐幀動畫)

編輯:關於Android編程

上一篇介紹了Animation動畫其一:Tween補間動畫。

這篇文章接下來介紹Animation另一種動畫形式:Frame逐幀動畫。

Frame動畫是一系列圖片按照一定的順序展示的過程,和放電影的機制很相似,我們稱為逐幀動畫。Frame動畫可以被定義在XML文件中,也可以完全編碼實現(後面會給出這兩種實現方式的源代碼Demo)。

下面分別介紹:

一、定義在xml中實現:

實現效果圖:

\

源代碼:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20140515/2014051509041788.jpg" alt="\">

布局文件:main.xml:




    

    

    

frame.xml:



 
    android:oneshot="false" >


    
    
    
    
    
    
    


FrameDemoActivity:

package com.zhy.com;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

/**
 * 
 	逐幀動畫Frame動畫實例
 * 
 */
public class FrameDemoActivity extends Activity {
	private Button startBtn;// 開始動畫按鈕
	private Button stopBtn;// 停止動畫按鈕
	private ImageView imageView;// 顯示圖片
	private AnimationDrawable anim;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 實例化控件
		startBtn = (Button) findViewById(R.id.startButton);
		stopBtn = (Button) findViewById(R.id.stopButton);
		imageView = (ImageView) findViewById(R.id.image);
		// 指定動畫的幀的列表
		imageView.setBackgroundResource(R.anim.frame);
		// AnimationDrawable--與逐幀動畫相關的Drawable
		anim = (AnimationDrawable) imageView.getBackground();
		// 按鈕事件
		startBtn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				// 開始動畫
				anim.start();
			}
		});
		stopBtn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				anim.stop();// 停止播放
			}
		});

	}
}

二、直接代碼編碼的形式實現:

實現效果圖:

\

源代碼:

\

布局文件:

activity_main:




    

    

    

MainActivity:

package com.framedemo2;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {
	private Button startBtn;// 開始動畫按鈕
	private Button stopBtn;// 停止動畫按鈕
	private ImageView imageView;// 顯示圖片
	private AnimationDrawable anim;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 實例化控件
		startBtn = (Button) findViewById(R.id.startButton);
		stopBtn = (Button) findViewById(R.id.stopButton);
		imageView = (ImageView) findViewById(R.id.image);
		anim = new AnimationDrawable();

		startBtn.setOnClickListener(this);
		stopBtn.setOnClickListener(this);

		for (int i = 1; i <= 3; i++) {
			// 根據資源名稱和目錄獲取R.java中對應的資源ID
			int id = getResources().getIdentifier("f" + i, "drawable",
					getPackageName());
			// 根據資源ID獲取到Drawable對象
			Drawable drawable = getResources().getDrawable(id);
			// 將此幀添加到AnimationDrawable中
			anim.addFrame(drawable, 300);
		}
		anim.setOneShot(false); // 如果設置為false,則只會播放一次,不會循環播放。 
		imageView.setBackgroundDrawable(anim); // 將動畫設置為ImageView背景
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.startButton:

			anim.start();
			break;
		case R.id.stopButton:
			anim.stop();
			break;

		default:
			break;
		}
	}

}

下面提供以上兩種實現方式的源代碼,供讀者參考使用:

以xml形式實現逐幀動畫的源代碼:

點擊下載源碼

直接以編碼的方式實現逐幀動畫的源代碼:

點擊下載源碼

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved