Я пытаюсь выполнить основную задачу поворота холста 20 раз
второй таймер, но он не работает должным образом, и его
отстающий. например, если я поверну прямоугольник на 0,3 градуса за 50 мс
следует повернуть на 6 градусов в секунду, но это не так. Это
действительно медленно вращается. Вот мой пример кода:
//Code for update task
class UpdateTimeTask extends TimerTask {
public void run() {
hndView.post(new Runnable() {
public void run() {
hndView.invalidate(); //this code invalidates custom view that calls onDraw to draw rotated hand
}
});
}
}
//Code for onDraw method of custom view that needs to be update
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
//ang is angle to rotate and inc is float value of 0.3 degree to be incremented
ang = ang + inc;
if (ang >= 360) ang = ang - 360;
canvas.rotate(ang, canvas.getWidth()/2, canvas.getHeight()/2);
canvas.drawRect((canvas.getWidth()/2 - 2), (canvas.getHeight()/2 - 125), (canvas.getWidth()/2 + 2), (canvas.getHeight()/2 + 10), mTextPaint);
canvas.restore();
}
//code to schedule task
Timer timer = new Timer();
UpdateTimeTask tt = new UpdateTimeTask();
timer.schedule(tt, 0, 50);
Может кто-нибудь сказать мне, что я здесь не так делаю? Должен ли я использовать
другой подход к выполнению этой задачи? Потому что в это трудно поверить
что вы не можете иметь простой плавный поворот прямоугольника 20 раз
одна секунда.