備註:源自Android Samples——Snake
要使View具有動畫效果,步驟如下:
- 在View中添加一個Handler,該Handler負責處理View的刷新請求,Handler在處理這個請求的時候,會先執行View的數據更新。
- 在View數據更新完(update()方法)後,向Handler發送延時刷新View請求,那麼又回到了步驟一,這就形成一個循環,產生動畫效果
代碼模型如下:
package com.example.android.snake;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.View;
public class AnimationModel extends View {
public class RefreshHandler extends Handler {
//刷新View
@Override
public void handleMessage(Message msg) {
update();
invalidate();
removeMessages(0);
}
//延時一段時間後發送刷新View的請求
public void delayRefresh(int delayed) {
sendMessageDelayed(obtainMessage(0), delayed);
}
}
public AnimationModel(Context context) {
super(context);
}
boolean isRuning;
public final static int DELAYED = 600;
private RefreshHandler refreshHandler = new RefreshHandler();
//由update方法與refreshHandler.delayRefresh形成一個無限循環
private void update() {
if (isRuning) {
// 這裏執行View的一些數據更新
//...
refreshHandler.delayRefresh(DELAYED);
}
}
}