私はこれをかなり単純な表示にしました。一定期間(左から右へ移動する赤い線をアニメートすることになっています(DURATION
)。 DELAY
の位置を更新する必要があるので、アニメーションをよりスムーズに調整することができます。私はエミュレータでこれをテストしていることに注意してください。さて、もし私がDELAY
を増やすと、アニメーションは、アニメーション時間全体に影響を与えなくても、より速く終了します。私は単純にアニメーション化するのが速すぎる、すべてのリソースを狙っていますか?または私の数学はオフですか?キャンバス上を移動する線をアニメ化する
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を変更しますか? –