На скриншоте, который вы разместили, рисование не займет 3-5 секунд. Вам не нужно использовать слои, чтобы выполнить то, о чем вы говорите. У меня есть приложение с таким количеством данных, как вы описываете, но с более сложной визуализацией. Он также имеет такую же функцию просмотра, которую вы обсуждали. Не имеет проблем с окраской, и чаще всего рисует за 3-5 миллисекунд.
Убедитесь, что данные хранятся таким образом, чтобы поток краски мог быстро получить к ним доступ. Поток краски должен тратить все свое время на рисование, и если ему приходится искать в данных, чтобы найти то, что ему нужно, он тратит свое время.
Соберите информацию о времени внутри метода рисования и запишите ее в консоль. Отследите, сколько времени занимает каждая часть метода, и выясните, какие строки кода вызывают задержку. Выясните, как избавиться от этой задержки. Метод рисования должен занимать всего 3-5 миллисекунд. Вы в 1000 раз - что-то может быть оптимизировано.
Убедитесь, что вы рисуете только то, что на самом деле будет видно на экране. Не тратьте время на рисование вещей, которые будут появляться за кадром. Также убедитесь, что вы не рисуете действительно длинные линии, которые видны на экране только частично. (Например, если вы увеличиваете масштаб до чертиков, и даже самая маленькая линия теперь огромна.) Все это должно быть нарисовано, независимо от того, видно оно или нет.
Я был бы удивлен, основываясь на скриншоте, что вы должны использовать любой вид наложения для достижения этой цели. 3-5 секунд - это слишком долго даже для одного цикла рисования.