Проблемы с производительностью Android Paint.setStrokeCap ​​(Paint.Cap.ROUND) - PullRequest
0 голосов
/ 20 марта 2019

У меня объект Paint инициализирован следующим образом:

chartLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
chartLinePaint.setStyle(Paint.Style.STROKE);
chartLinePaint.setStrokeWidth(6.0f);
chartLinePaint.setStrokeCap(Paint.Cap.ROUND);

Проблема в том, что рисование большого количества линий этой краской приводит к значительному падению кадра:

canvas.drawLines(pts, chartLinePaint);

УдалениеchartLinePaint.setStrokeCap(Paint.Cap.ROUND) возвращает производительность к норме, но линейные соединения не гладкие.

Другой вариант, который я пробовал, использовал Canvas.drawPath, но производительность даже хуже, чем Canvas.drawLines.

Без setStrokeCap(Paint.Cap.ROUND) (время рисования кадра до 16 мс):

enter image description here

С setStrokeCap(Paint.Cap.ROUND) (время рисования кадра значительно превышает 16 мс):

enter image description here

...