編輯:開發入門
大家平時見到的最多的可能就是Frame動畫了,android中當然也少不了它。它的使用更加簡單,只需要創建一個 AnimationDrawabledF對象來表示Frame動畫,然後通過addFrame 方法把每一幀要顯示的內容添加進去,最後通過start 方法就可以播放這個動畫了,同時還可以通過 setOneShot方法設置是否重復播放。 下面就是一個用Frame動畫模擬日全食的效果。先看看效果。
android Frame動畫概述+示例
android Frame動畫概述+示例
android Frame動畫概述+示例
android Frame動畫概述+示例
Activity01
Java代碼 package xiaohang.zhimeng;
import android.app.Activity;
import android.os.Bundle;
import android.vIEw.KeyEvent;
import android.vIEw.Window;
import android.vIEw.WindowManager;
public class Activity01 extends Activity {
private GameView mGameVIEw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 設置無標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 設置為全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mGameView = new GameVIEw(this);
setContentView(mGameVIEw);
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (mGameVIEw == null) {
return false;
}
mGameVIEw.onKeyUp(keyCode, event);
return true;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mGameVIEw == null) {return false;
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 關閉Activity
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
package xiaohang.zhimeng;
import android.app.Activity;
import android.os.Bundle;
import android.vIEw.KeyEvent;
import android.vIEw.Window;
import android.vIEw.WindowManager;
public class Activity01 extends Activity {
private GameView mGameVIEw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 設置無標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 設置為全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mGameView = new GameVIEw(this);
setContentView(mGameVIEw);
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (mGameVIEw == null) {
return false;
}
mGameVIEw.onKeyUp(keyCode, event);
return true;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mGameVIEw == null) {
return false;
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 關閉Activity
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
GameVIEw
Java代碼
package xiaohang.zhimeng;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.vIEw.KeyEvent;import android.view.VIEw;
public class GameView extends VIEw{
//定義AnimationDrawable動畫
private AnimationDrawable frameAnimation = null;
Context mContext = null;
//定義一個Drawable對象
Drawable mBitAnimation = null;
public GameVIEw(Context context) {
super(context);
mContext = context;
//實例化AnimationDrawable對象
frameAnimation = new AnimationDrawable();
/*裝載資源*/
//這裡用一個循環裝載所有名字類似的資源
//如"a1...........15.png"的圖片
for(int i = 1; i <= 15; i++){
int id = getResources().getIdentifIEr("a" + i, "drawable", mContext.getPackageName());
//此方法返回一個可繪制的對象與特定的資源ID相關聯
mBitAnimation = getResources().getDrawable(id);
/*為動畫添加一幀*/
//參數mBitAnimation是該幀的圖片
//參數500是該幀顯示的時間,按毫秒計算
frameAnimation.addFrame(mBitAnimation, 500);
}
/*上邊用到了Resources的getIdentifIEr方法 方法返回一個資源的唯一標識符,如果沒有這個資源就返回0
* 0不是有效的標識符,在說說這個方法幾個參數的含義
* 第一個 就是我們的資源名稱了。
* 第二個 就是我們要去哪裡找我們的資源 我們的圖片在drawable 下 所以為drawable
* 第三個 我們用了Context的getPackageName返回應用程序的包名
* */
//設置播放模式是否循環播放,false表示循環,true表示不循環
frameAnimation.setOneShot(false);
//設置本類將要顯示的這個動畫
this.setBackgroundDrawable( frameAnimation );
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
public boolean onKeyUp(int keyCode, KeyEvent event){
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
//當按手機的上方向鍵時開始播放frameAnimation.start();
break;
}
return true;
}
}
package xiaohang.zhimeng;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.vIEw.KeyEvent;
import android.view.VIEw;
public class GameView extends VIEw{
//定義AnimationDrawable動畫
private AnimationDrawable frameAnimation = null;
Context mContext = null;
//定義一個Drawable對象
Drawable mBitAnimation = null;
public GameVIEw(Context context) {
super(context);
mContext = context;
//實例化AnimationDrawable對象
frameAnimation = new AnimationDrawable();
/*裝載資源*/
//這裡用一個循環裝載所有名字類似的資源
//如"a1...........15.png"的圖片
for(int i = 1; i <= 15; i++){
int id = getResources().getIdentifIEr("a" + i, "drawable", mContext.getPackageName());
//此方法返回一個可繪制的對象與特定的資源ID相關聯
mBitAnimation = getResources().getDrawable(id);
/*為動畫添加一幀*/
//參數mBitAnimation是該幀的圖片
//參數500是該幀顯示的時間,按毫秒計算
frameAnimation.addFrame(mBitAnimation, 500);
}
/*上邊用到了Resources的getIdentifIEr方法 方法返回一個資源的唯一標識符,如果沒有這個資源就返回0
* 0不是有效的標識符,在說說這個方法幾個參數的含義
* 第一個 就是我們的資源名稱了。
* 第二個 就是我們要去哪裡找我們的資源 我們的圖片在drawable 下 所以為drawable
* 第三個 我們用了Context的getPackageName返回應用程序的包名
* */
//設置播放模式是否循環播放,false表示循環,true表示不循環
frameAnimation.setOneShot(false);//設置本類將要顯示的這個動畫
this.setBackgroundDrawable( frameAnimation );
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
public boolean onKeyUp(int keyCode, KeyEvent event){
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
//當按手機的上方向鍵時開始播放
frameAnimation.start();
break;
}
return true;
}
}
環境監控系統在這個場景中,我們假設您是企業所在的若干辦公場所的資產管理員。管理資產與管理數據中心沒有太大的差別 — 一般情況下都很枯燥,只有出現緊急的情況下工作才會比較
使用 JSONXML 是 android 上的一等公民,鑒於依賴於 XML 的 Web 服務的數量,這是個好事。很多服務還支持另一個流行格式 JSON。它通常比 XML
之所以有那麼多XXXTestCase主要是為了簡化工作。例如當你想對一個訪問數據庫的功能進行測試時,首先需要自己啟動並初始化數據庫。在 這裡是類似的,如果你想測試一
所以Google Voice Recognition在android 的實現就變得極其輕松。語音識別,借助於雲端技術可以識別用戶的語音輸入,包括語音控制等技術,下面我們