Я написал простое приложение для Android, которое рисует лабиринт, используя пользовательский вид, полученный из SurfaceView
.Он следует модели примера приложения LunarLander и выполняет все вычисления и рисование, используя фоновый поток непосредственно в объекте SurfaceHolder
.
Все хорошо, и хорошо работает для малых /средние лабиринты, однако, если я установлю размер ячейки лабиринта равным 8 пикселям, в лабиринте будет много ячеек, по которым будет ползать приложение.
Код выполняет то, что мне не нравится, то есть рисует каждую ячейкудаже если он не изменился, и это необходимо, чтобы избежать мерцания экрана из двойного буфера SurfaceView
(на предыдущих итерациях приложения я рисовал только то, что изменилось и это привело к беспорядочному беспорядку).
Тогда я хочу использовать SurfaceView
, но будьте более разборчивы в том, что будет нарисовано.Это возможно?Если нет, каковы альтернативы?Как насчет сохранения закадрового растрового изображения и выборочного рисования в этом первом?
РЕДАКТИРОВАТЬ: я реализовал закадровую комбинацию Bitmap
и Canvas
, записанную моим конечным автоматом, управляемым таймером, рисуя только те затронутые областиво время резьбы / раствор.Затем я просто рисую весь закадровый рисунок на SurfaceView
в методе run()
, и это решило мою проблему;Я могу уменьшить размер ячейки до 5 пикселей, и производительность в порядке.