Android 動畫之幀動畫
幀動畫是根據視覺停留原理而實現的動畫效果,本例從AnimationDrawable角度來實現一個簡單動畫效果,主頁面如圖:
示例用含有數字1、2、3、4的圖片代表不同的幀,然后通過AnimationDrawable來控制幀動畫。下面說明一下實現過程:
1、建立動畫文件:
在res/anim目錄中建立一個xml文件,名稱任取,格式如下:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item android:drawable="@drawable/n1" android:duration="50" />
<item android:drawable="@drawable/n2" android:duration="50" />
<item android:drawable="@drawable/n3" android:duration="50" />
<item android:drawable="@drawable/n4" android:duration="50" />
</animation-list>
說明:
- android:oneshot:幀動畫運行的次數,true表示運行一次,false表示循環播放;
- item:定義每幀的屬性;
- android:drawable:指定該幀對應的圖像資源;
- android:duration:該幀圖像停留的時間。
2、裝載并控制幀動畫:
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;
public class FrameActivity extends Activity implements OnClickListener {
private ImageView imageView;
private AnimationDrawable animationDrawable;
private Button startButton;
private Button startOneShotButton;
private Button stopButton;
private Button pauseOrContinueButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton = (Button) findViewById(R.id.button1);
startButton.setOnClickListener(this);
startOneShotButton = (Button) findViewById(R.id.button2);
startOneShotButton.setOnClickListener(this);
stopButton = (Button) findViewById(R.id.button3);
stopButton.setOnClickListener(this);
pauseOrContinueButton = (Button) findViewById(R.id.button4);
pauseOrContinueButton.setOnClickListener(this);
imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setBackgroundResource(R.anim.frame_animation);
animationDrawable = (AnimationDrawable) imageView.getBackground();
}
private void start(boolean isOneShot) {
if (animationDrawable != null) {
if (animationDrawable.isRunning()) {
animationDrawable.stop();
}
animationDrawable.setOneShot(isOneShot);
animationDrawable.start();
}
}
@Override
public void onClick(View view) {
if (view == startButton) {
start(false);
return;
}
if (view == startOneShotButton) {
start(true);
return;
}
if (view == stopButton) {
animationDrawable.stop();
return;
}
if (view == pauseOrContinueButton) {
if (animationDrawable.isRunning()) {
animationDrawable.stop();
} else {
animationDrawable.start();
}
return;
}
}
}
說明:
- start():開始播放動畫;
- stop():停止播放動畫;
- isRunning():判斷動畫是否正在播放;
- setOneShot():設置是否循環播放。
AnimationDrawable還有一些其它的控制動畫的方法,具體參看Google開發者網站相關資料。:)
3、多說一句:
希望對你有所幫助,如需代碼,請點擊附件 !=^_^=
智能推薦
Android 基本動畫(幀動畫/補間動畫/屬性動畫)
Android 基本動畫(幀動畫/補間動畫/屬性動畫) 本文由 Luzhuo 編寫,轉發請保留該信息. 原文: https://blog.csdn.net/Rozol/article/details/79730559 (Drawable Animation)幀動畫 xml文件(存于drawable目錄下) 代碼 View Animation(補間動畫) 補間動畫效果不會改變控件的真實坐標 重復類型...
Android動畫,幀動畫,補間動畫,屬性動畫
Android動畫 一、AlphaAnimation( 漸變動畫 ) AlphaAnimation類是Android系統中的透明變化動畫類,用于控制View對象的透明度變化,該類繼承于Animation。 參數說明: fromAlpha:開始時刻的透明度,取值范圍為(0-1) toAlpha:結束時刻透明度,取值范圍為(0-1) 二、RotateAnimation( 旋轉動畫 ) RotateAn...
Android動畫基礎【1】——(逐幀動畫)
動畫的意義: 1. 增強視覺效果 2. 更好的引導用戶 整個課程目標: 1. 了解定義逐幀動畫的方法 2. 了解定義視覺動畫的方法 3. 了解定義屬性動畫的方法 整個課程的學習內容: 1. 逐幀動畫 2. 視覺動畫系統 3. 屬性動畫系統 這里首先記錄學習逐幀動畫相關知識 逐幀動畫也叫作圖片動畫。通過在一個固定區域然后一張一張的加載圖片而產生的動畫效果(每一張圖片就是一幀...
Android 安卓動畫 幀動畫(Frame)
引入 篇 幀 指的是每秒播放圖片的數量,單位(fps),1 fps 是一幀,當幀速度達到25fps會形成連貫動畫效果 類AnimationDrawable 用于創建逐幀動畫的對象,由一系列Drawable對象定義,這些對象可以用作View對象的背景。創建逐幀動畫的最簡單方法是在XML文件中定義動畫,將其放在res/drawable/文件夾中,并將其作為View對象的背景。然后,調用Run()啟動動...
Android 學習動畫 — 總結《I》幀動畫
效果圖: 幀動畫的原理時什么? 把圖片資源順次排列,每張圖片代表一幀,然后依次播放顯示出來,實現人眼看到的動畫效果。幀動畫通過標簽定義,然后在 Android 代碼中把它設置給顯示組件作為背景或者數據源,如 ImageView 的背景等,最后由 AnimationDrawable 提供的 start() 等方法進行播放控制。 自定義并實現一個幀動畫,先在 res / drawable 新建 fra...
猜你喜歡
Android 動畫(二)幀動畫 AnimationDrawable
使用AnimationDrawable實現幀動畫 幀動畫是一種比較傳統的動畫,它是由一系列不同的圖像創建的,按照順序播放,就像播放電影一樣。 雖然可以使用AnimationDrawable類在代碼中定義與使用動畫,但使用單個XML文件定義幀動畫會更簡單。 XML文件由一個元素作為根節點和一系列子節點組成,每個子節點定義一個框架:一個可繪制的框架資源和幀持續時間。 注意:不能在onCreate()調...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...