用于实时制图的Android路径

JRa*_*ond 3 charts android 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());
    }
  }
Run Code Online (Sandbox Code Playgroud)

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

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

Dan*_*yan 19

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

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

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

android:hardwareAccelerated="false"
Run Code Online (Sandbox Code Playgroud)