Повысить производительность пользовательского представления на основе SurfaceView?

Я написал простое приложение для Android, которое рисует лабиринт с использованием пользовательского представления, полученного из SurfaceView . Он следует модели примера приложения LunarLander и выполняет все вычисления и рисование с использованием фонового потока непосредственно в объект SurfaceHolder .

Все хорошо, и он работает хорошо для небольших / medium, однако, если я установил размер ячейки лабиринта равным 8 пикселей, в лабиринте будет много ячеек, по которым будет перемещаться приложение.

Код делает то, что мне не нравится: отрисовывает каждую ячейку, даже если она не изменилась, и это необходимо для предотвращения мерцания экрана из двойного буфера SurfaceView (в предыдущих итерациях приложение, которое я рисовал, изменилось и привело к беспорядку).

Тогда я хочу иметь возможность использовать SurfaceView , но более избирательно подходить к рисованию. Это возможно? Если нет, то каковы альтернативы? Как насчет сохранения заэкранного растрового изображения и выборочного рисования в него первым?

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

7
задан trojanfoe 14 February 2011 в 22:43
поделиться