首页 > 解决方案 > Android Paint.setStrokeCap(Paint.Cap.ROUND) 性能问题

问题描述

我有一个通过以下方式初始化的 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)(帧绘制时间明显超过16ms):

在此处输入图像描述

标签: androidcanvasandroid-custom-view

解决方案


推荐阅读