Как нарисовать график в Android, например, приложение Wifi Analyzer?
Привет, Я пытаюсь разработать приложение для тестирования полей, и я должен получать информацию, такую как уровень сигнала соседних ячеек.
Итак, мой вопрос:
Как отобразить график с разными соседними ячейками Ось X и уровень сигнала на оси Y в реальном времени? Пример здесь.
У меня уже есть 5 или 6 соседних ячеек, и для каждой из них его сила сигнала.
Ответы
Ответ 1
Скорее вычеркните диаграмму самостоятельно с помощью Canvas, вы можете использовать библиотеки Engine Engine, и это будет намного проще сделать.
Как AchartEngine, ChartDroid, aFreeChart, MPAndroidChart
Для 3D-диаграммы Charts4J
Как отобразить график с разными соседними ячейками Ось X и уровень сигнала на оси Y в реальном времени?
Я использовал aChart Engine для того же самого в одном из моих приложений. В библиотеке есть полная демо-версия API, поэтому будет легко понять, как ее использовать.
Ответ 2
Я не знаю, какой тип графика вы хотите разработать, потому что в вашей ссылке есть разные типы. Но я разработал график реального времени в андроиде. Я использую холст для рисования линий.
public class GraphView extends View
{
...
private final Rect rect = new Rect();
private final Paint linePaint = new Paint();
private final Paint backgroundPaint = new Paint();
private float[] points;
public GraphView(final Context context, final AttributeSet aSet)
{
super(context, aSet);
}
@Override
protected void onDraw(final Canvas canvas)
{
if (points == null)
{
return;
}
canvas.drawLines(points, linePaint);
rect.set((int) (xIndex * xScale), 0, (int) (xIndex * xScale + 5), getHeight());
canvas.drawRect(rect, backgroundPaint);
}
...
}
Вы можете легко позиционировать/размер вашего прямоугольника в соответствии с вашими потребностями. Я не писал вычисления xIndex и xScale. Массив точек - это тот, который будет записан ваши значения.
Но будьте осторожны, в строках андроида нарисованы с парами, как я знаю, нет "точечной" структуры.
Я имею в виду, что [1, 0.25, 2, 0.45] рисует линию между x1 = 1, y1 = 0.25 и x2 = 2, y2 = 0.45
Также вы можете вызвать draw by postInvalidate()
postInvalidate()
onDraw (холст холста)
Ответ 3
Я предлагаю вам использовать AChartEngine, а не рисовать на холсте.
Вы можете скачать библиотеку, javadocs и демонстрационное приложение здесь.
На сайте youtube есть обучающие материалы по началу работы с AChartEngine.
Вы можете использовать линейные диаграммы с областью ниже диаграммы, заполненной цветом или не заполненной для копирования функций в первых снимках экрана, которые вы предоставили.