У меня объект 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 мс):
С setStrokeCap(Paint.Cap.ROUND)
(время рисования кадра значительно превышает 16 мс):