Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android实时图表路径_Android_Charts_Android Canvas - Fatal编程技术网

Android实时图表路径

Android实时图表路径,android,charts,android-canvas,Android,Charts,Android Canvas,我正在尝试在android中创建一个实时图表工具,在大多数情况下它都能工作,只是当我在一条路径中获得太多数据点时,它会破坏openGL。我之所以使用路径,是因为当传入的值超出图形的当前边界时,我通过矩阵转换整个数据集。我走错方向了吗?有更好/更合适的API用于这类事情吗?如果可能的话,我很乐意将路径修剪到当前边界/我知道怎么做。谢谢 昂德劳: @Override protected void onDraw(Canvas canvas) { scaleX = getWidth()

我正在尝试在android中创建一个实时图表工具,在大多数情况下它都能工作,只是当我在一条路径中获得太多数据点时,它会破坏openGL。我之所以使用路径,是因为当传入的值超出图形的当前边界时,我通过矩阵转换整个数据集。我走错方向了吗?有更好/更合适的API用于这类事情吗?如果可能的话,我很乐意将路径修剪到当前边界/我知道怎么做。谢谢

昂德劳:

  @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”标志的其他活动中执行此操作。