Пути Android для построения графиков в реальном времени - PullRequest
3 голосов
/ 28 марта 2012

Я пытаюсь создать утилиту построения графиков в реальном времени в 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 - это подкласс Path, который включает в себя объект Paint)

Ошибка, о которой идет речь, является предупреждением от OpenGLRenderer: «Shapeпуть слишком велик, чтобы его можно было отобразить в текстуру "

1 Ответ

19 голосов
/ 04 апреля 2012

Если вы посмотрели в своих журналах, вы заметите ошибку, подобную этой:

04-04 10: 39: 06.314: W / OpenGLRenderer (6092): путь формы слишком велик для визуализируется в текстуру

Поскольку аппаратное ускорение включено, все отображается как текстура, и для текстур существует ограничение по размеру. Если разбить большие фигуры на более мелкие, это решит вашу проблему. Или просто отключите аппаратное ускорение:

android:hardwareAccelerated="false"
...