Android实时图表路径
我正在尝试在android中创建一个实时图表工具,在大多数情况下它都能工作,只是当我在一条路径中获得太多数据点时,它会破坏openGL。我之所以使用路径,是因为当传入的值超出图形的当前边界时,我通过矩阵转换整个数据集。我走错方向了吗?有更好/更合适的API用于这类事情吗?如果可能的话,我很乐意将路径修剪到当前边界/我知道怎么做。谢谢 昂德劳:Android实时图表路径,android,charts,android-canvas,Android,Charts,Android Canvas,我正在尝试在android中创建一个实时图表工具,在大多数情况下它都能工作,只是当我在一条路径中获得太多数据点时,它会破坏openGL。我之所以使用路径,是因为当传入的值超出图形的当前边界时,我通过矩阵转换整个数据集。我走错方向了吗?有更好/更合适的API用于这类事情吗?如果可能的话,我很乐意将路径修剪到当前边界/我知道怎么做。谢谢 昂德劳: @Override protected void onDraw(Canvas canvas) { scaleX = getWidth()
@Override
protected void onDraw(Canvas canvas) {
scaleX = getWidth() / (maxX - minX);
scaleY = getHeight() / (maxY - minY);
// TODO: Use clips to draw x/y axis, allow color to be defined in attributes, etc.
canvas.drawColor(0xFF000000);
for (DataLine line : mPathList.values()) {
canvas.drawPath(line, line.getPaint());
}
}
(数据线是包含绘制对象的路径的子类)
问题中的错误是来自OpenGLRenderer的警告:
“形状路径太大,无法渲染为纹理”如果查看日志,您会发现如下错误: 04-04 10:39:06.314:W/OpenGLRenderer(6092):形状路径太大,无法创建 渲染成纹理 由于启用“硬件加速”,所有内容都将渲染为纹理,并且纹理有大小限制。如果你把较大的形状分解成较小的形状,这将解决你的问题。或者只需关闭硬件加速:
android:hardwareAccelerated="false"
你能把相关代码贴出来吗?如果不知道异常情况和您当前的代码,我们无法为您提供很多帮助。我没有发布,因为它没有太多内容。。。。但无论如何我都会这么做,因为你提到你使用的是hardwware加速画布,所以我假设你正在为蜂巢和更高版本开发你的应用程序。如果是这样的话,你还需要记住,改变一条道路是非常昂贵的。(这将基本上导致一个新的纹理上传)。如果您正在绘制的点的数量非常少(比如十几个),那么您可以在每一帧上绘制所有点(即使在进行立方近似等操作时)@Renard,是的,Honeycom+,但目前的代码可能足够简单,如果证明3级之前的版本有问题,我可以跳过加速。2@Renard就点数而言,它将取决于正在绘制的函数和域/范围。这实际上取决于API消费者想要做什么,这解决了我的问题。但是
ScrolleView
已经开始落后了!有一些选项可以设置哪些视图需要硬件加速,哪些视图不需要代码。否则,在没有“android:hardwareAccelerated=“false”标志的其他活动中执行此操作。