Аналогично этому вопросу , я ищу способ нанести точки данных на представление в 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 .
Графики того же типа, что и это , поэтому любая оптимизация с помощьюисключение точек, которые находятся слишком близко друг к другу, чтобы отображаться на экране, определенно будет иметь значение.