Я рисую около 5000 строк на представлении через холст onDraw(). Я панорамирую и масштабируюсь в представлении, поэтому onDraw получает много имен, чтобы нарисовать 5000 строк. Я измерил миллисекунды с SystemClock.uptimeMillis();
, а onDraw разговаривает 35 миллисекунд для звонка evey, который должен только замедляться. В то время как масштабирование я действительно вижу, что он прыгает ...Проблема с производительностью onDraw занимает до
Я уже установил hardwareAcceleration в true, но это ничего не изменило. Я думаю, что цикл for может замедлить получение значений.
Вот код, который требуется, чтобы долго:
// Plot all lines on the view
for (int i = 0; i < count; i++) {
canvas.drawLine(line[i].getPktStart().getX(),
line[i].getPktStart().getY(), line[i]
.getPktEnd().getX(), line[i]
.getPktEnd().getY(), lineColor);
}
Значение «счетчик» составляет около 5000. Объект линии просто класс, который держит Й и Y от начальной точки и конечной точки линия.
У вас есть предложения, чтобы заставить его работать быстрее? Это потому, что массив слишком велик? Я думал, что 5000 значений не должно быть проблемой ...
Заранее спасибо.
Мне нужно нарисовать фактические строки или путь быстрее и быстрее? Я мог бы попытаться избавиться от каста – GeoGecco
. Хорошо, я изменил свой объект линии, чтобы иметь точки с плавающей точкой, и это похоже на 1-2 миллисекунды. Все еще есть около 33 миллисекунд в onDraw, который просто замедляется .... – GeoGecco
Возможно, вы что-то не так? Типичный экран от 800x480 до 1920x1080, зачем вам нужно рисовать линии 5K, которые не будут вписываться в экран или будут выглядеть нарушенными ... –