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