android - 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):
解决方案
推荐阅读
- kaggle - 你如何读取 kaggle 数据?
- c# - 得到“线程被中止。” 在登录过程中
- bundler - 安装多个时无法指定捆绑器版本
- mysql - 将两个 MYSQL 查询列结果合并为一个以在 ORDER BY 中使用
- webpack - 从 json 文件导入 VueJS 组件
- visual-studio - 无法在调用堆栈中“显示本机代码”?
- ios - 将 XML 转换为 Plist 的任何更简单的方法?
- c# - C# - 我似乎无法将数组传递给不同的方法,一个用于初始化,一个用于修改?
- java - 从 ant taks 访问 Eclipse 错误标记
- c - 为什么参数的函数大小增加到字大小?