Я собираюсь использовать Canvas, но опасаюсь, что метод onDraw будет вызываться с нерегулярными интервалами, из-за чего быстрые элементы будут двигаться с неравномерной скоростью.
Вы не должны не обновлять положение объектов в onDraw()
, потому что:
- Действительно, метод может не вызываться через заданные промежутки времени.
- Он предназначен для рисования объектов, а не для обновления объектов.
Вместо этого обновите объекты/мир в другом методе, который вы вызываете через равные промежутки времени с помощью таймера.
После обновления мира вызовите invalidate()
на своем View
, чтобы активировать метод onDraw()
. Если у вашего приложения есть свободное время, оно будет вызвано. Если нет, то нет проблем, так как world update method
будет продолжать работать и, таким образом, обновлять ваш мир.
(Конечно, если ваше приложение слишком занято, представление никогда не обновляется, и вам нужно решить проблемы!)
В качестве альтернативы, если я могу получить системное время в мс, я могу взять разницу между двумя последовательными вызовами onDraw и на основе скорости этих быстрых элементов сделать их движение плавным.
Это путь к «методу обновления мира»! Это исправит нерегулярные интервалы таймера.
person
Veger
schedule
18.01.2013