用于实时制图的Android路径

时间:2012-03-27 20:03:06

标签: android charts android-canvas

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

的onDraw:

  @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());
    }
  }

(DataLine是包含Paint对象的Path的子类)

有问题的错误是来自OpenGLRenderer的警告: “形状路径太大而无法渲染到纹理中”

1 个答案:

答案 0 :(得分:19)

如果您查看日志,您会发现如下错误:

  

04-04 10:39:06.314:W / OpenGLRenderer(6092):形状路径太大而无法   渲染成纹理

自打开硬件加速后,所有内容都会呈现为纹理,并且纹理有一个大小限制。如果将较大的形状分解为较小的形状,那将解决您的问题。或者只是关闭硬件加速:

android:hardwareAccelerated="false"