저는이 간단한보기를 만들었습니다. 일정 기간 동안 왼쪽에서 오른쪽으로 이동하는 빨간색 선을 애니메이션으로 만들어야합니다 (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을 바꿀까요? –