Я искал довольно много часов и не смог найти краткого и точного ответа на мой вопрос. У меня есть приложение, в котором мне нужно нарисовать спортивное поле (включая все линии тангажа) на экране. До сих пор я расширил SurfaceView и в значительной степени скопировал и остальную часть демонстрации LunarLander.
Все данные, которые требуются приложению для отображения шага в правильных размерах, поступают из сокета, который тоже работает нормально. Однако в минуту в функции onDraw () я рисую все линии в каждом кадре, что вызывает довольно медленную частоту кадров в эмуляторе (например, ~ 10 кадров в секунду). Вот моя функция onDraw ():
@Override
public void onDraw(Canvas canvas) {
canvas.drawARGB(255,0,144,0);
canvas.drawLine(canvas, getFirstLine(), mPaint);
canvas.drawRect(canvas, getFirstRect(), mPaint);
canvas.drawRect(canvas, getSecondRect(), mPaint);
...
canvas.drawRect(canvas, getSecondRect(), mPaint);
drawAnimatedObjects();
}
Затем я рисую круги и различные позиции на этом фоне. Мой вопрос: как мне сделать это более эффективным? Есть ли способ, которым я могу рисовать линии при инициализации приложения и не нужно перерисовывать их каждый кадр?
Спасибо за любую помощь.