編輯:關於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:
android:oneshot="false" >
-
-
-
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:
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形式實現逐幀動畫的源代碼:
點擊下載源碼
直接以編碼的方式實現逐幀動畫的源代碼:
點擊下載源碼
Android 輸入控件
今天天氣不錯 蝦米 來講解 Android中輸入的控件 在 Android中輸入控件是常見的 隨處可見 今天又時間 寫一篇Android中輸入控件的集合 了解他們
【Android】由淺到深理解AIDL
一、 Binder概述1.1 為什麼要用binder出於安全性、穩定性和內存管理的考慮,Android的應用和系統服務運行在分離的進程中,但是它們之間需要通信和共享數據避
Android動畫 實現開關按鈕動畫(屬性動畫之平移動畫)實例代碼
Android動畫 實現開關按鈕動畫(屬性動畫之平移動畫),最近做項目,根據項目需求,有一個這樣的功能,實現類似開關的動畫效果,經過自己琢磨及上網查找資料,終於解決了,這
Android---程序鎖(1)展示頁面的搭建
一.寫在前面的話在日常使用手機的過程中,我們經常希望有這樣一個功能:可以對我們的某一個應用加鎖,進入的時候需要輸入密碼驗證身份,然後才可以進入主界面,這就是一個程序鎖的功