GPL-совместимая графическая библиотека для Android - PullRequest
3 голосов
/ 30 июня 2010

Аналогично этому вопросу , я ищу способ нанести точки данных на представление в Android.Предпочтительно, библиотека, которая будет делать это для ввода произвольного диапазона, а также позволять панорамирование и масштабирование (через пинч или масштабирование).

Прямо сейчас у меня есть представление подкласса, которое выполняет следующую нормализацию:

            final int width = View.MeasureSpec.getSize(this.widthMeasureSpec);
            final int height = View.MeasureSpec.getSize(this.heightMeasureSpec);
            final float factorA = width / (maxA - minA);
            final float factorS = height / (maxS - minS);
            final float constFactorA = factorA * minA;
            final float constFactorS = factorS * minS;
            final int dataLength = data.length;

            for (int i = 0; i < dataLength; ++i) {
                    if (i % 2 == 0)
                            _data[i] = _data[i] * factorA - constFactorA;
                    else
                            _data[i] = _data[i] * factorS - constFactorS;
            }

и вызов в onDraw () для метода drawPoints холста (также я обновляю this.widthMeasureSpec и this.heightMeasureSpec в onMeasure ()).

Этос minA / maxA в качестве границ для моей независимой переменной и minS / maxS в качестве границ для моей зависимой переменной.

Это прекрасно работает для отображения данных, но я надеюсь, что кто-то еще решил проблему рисованияоси и панорамирование / масштабирование.

У меня ~ 150 000 точек данных, и я бы предпочел оставить их как плавающие, чтобы сэкономить половину памяти.Я не знаю, насколько большие десятичные числа в JavaScript, но я действительно не хочу прибегать к передаче данных через JavaScript для API Google Charts или решения на основе HTML для памяти.

IЯ использую MyTouch 3g (оригинал, до разъема 3,5 мм и до обновления ОЗУ), поэтому проблема в производительности.Я хотел бы выпустить окончательный проект под GPLv3, так что это исключает GraphView .

Графики того же типа, что и это , поэтому любая оптимизация с помощьюисключение точек, которые находятся слишком близко друг к другу, чтобы отображаться на экране, определенно будет иметь значение.

Ответы [ 3 ]

2 голосов
/ 27 января 2011

sargas, проверьте android-misc-widgets . Он содержит виджет с именем PlotView с примером TestInterPolator.

Надеюсь, это поможет.

1 голос
/ 28 июля 2011

Оригинальный пост: Библиотека диаграмм и графиков для Android

С библиотекой GraphView можно создавать линии и гистограммы.

GraphView - это библиотека для Android, позволяющая программно создавать гибкие и красивые линейные и линейные диаграммы. Его легко понять, интегрировать и настроить.

Сначала проверьте библиотеку и интегрируйте ее в свой проект. Исходный код размещен на github. Библиотека GraphView на github

Также возможно позволить графику масштабироваться (масштабироваться) и прокручиваться. Больше информации об этой библиотеке на Оригинальное сообщение: Библиотека диаграмм и графиков для Android

Вот как это будет выглядеть : line graph

Затем вы можете легко создать его с помощью нескольких строк кода (см. Фрагмент):

// graph with dynamically genereated horizontal and vertical labels
GraphView graphView = new LineGraphView(
  this // context
  , new GraphViewData[] {
    new GraphViewData(1, 2.0d)
    , new GraphViewData(2, 1.5d)
    , new GraphViewData(2.5, 3.0d) // another frequency
    , new GraphViewData(3, 2.5d)
    , new GraphViewData(4, 1.0d)
    , new GraphViewData(5, 3.0d)
  } // data
  , "GraphViewDemo" // heading
  , null // dynamic labels
  , null // dynamic labels
);
LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
layout.addView(graphView);
0 голосов
/ 27 января 2011

Существует http://www.jfree.org/jfreechart/, который может удовлетворить ваши потребности, это библиотека Java, поэтому она должна хорошо подходить для Android. И это LGPL.

Если вы можете пойти по пути JavaScript, то вы можете проверить ProtoVis http://vis.stanford.edu/protovis/

...