編輯:關於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中輸入控件的集合 了解他們
一、 Binder概述1.1 為什麼要用binder出於安全性、穩定性和內存管理的考慮,Android的應用和系統服務運行在分離的進程中,但是它們之間需要通信和共享數據避
Android動畫 實現開關按鈕動畫(屬性動畫之平移動畫),最近做項目,根據項目需求,有一個這樣的功能,實現類似開關的動畫效果,經過自己琢磨及上網查找資料,終於解決了,這
一.寫在前面的話在日常使用手機的過程中,我們經常希望有這樣一個功能:可以對我們的某一個應用加鎖,進入的時候需要輸入密碼驗證身份,然後才可以進入主界面,這就是一個程序鎖的功