我已經制作了這個相當簡單的View。它應該爲在一段時間內從左向右傳播的紅線製作動畫(DURATION
)。它應該每DELAY
更新它的位置,以便您可以將動畫調整爲更平滑,如果您想要的話。應該指出,我正在模擬器上進行測試。那麼,如果我增加DELAY
那麼動畫完成得更快,儘管它對總動畫時間應該沒有影響。我只是動畫太快,佔用了所有的資源?或者我的數學關閉了?在Canvas上移動一條線進行動畫製作
public class AnimView extends View {
// Animation duration in milliseconds
private static final int DURATION = 4000;
// Update frame every delay (in milliseconds)
private static final int DELAY = 10;
private int pos;
private long lastTick;
private Paint paint;
public AnimView(Context context, AttributeSet attrs) {
super(context, attrs);
pos = 0;
lastTick = 0;
paint = new Paint();
paint.setColor(Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
if(System.currentTimeMillis() - lastTick >= DELAY) {
// Calculate a new position for the line
pos += (int) (((double) DELAY/DURATION) * getWidth());
lastTick = System.currentTimeMillis();
}
canvas.drawRect(pos, 0, pos + 1, getHeight(), paint);
if(pos < getWidth()) {
// Position is still below getWidth, keep animating
postInvalidate();
}
}
}
你在哪裏改變lastTick? – 2012-02-05 13:07:35