Для этого конкретного приложения вы можете нарисовать график "вручную", используя Path и SurfaceView.
Подготовьте экземпляр Paint во время инициализации:
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(3);
paint.setColor(Color.GREEN); //Change to what you want
Когда вам нужно обновить графику, очистите сцену и постройте путь линии (адаптируйте его к вашим потребностям):
canvas.drawColor(Color.WHITE);
Path path = new Path();
path.moveTo(0, yourValueAt(0));
for(int sec = 1; sec < 30; sec++)
path.lineTo(sec, yourValueAt(sec));
canvas.drawPath(path, paint);
Вы также можете использовать quadTo или cubicTo вместо lineTo.
Если вы хотите, чтобы ваш график имел эффект анимации в реальном времени (то есть скольжение влево, когда данные поступают справа), выможет рисовать на SurfaceView аналогично известному примеру LunarLander (следующий код является упрощенной версией):
class DrawingThread extends Thread {
@Override
public void run() {
while (running) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
doDraw(c);
}
} finally {
if (c != null) mSurfaceHolder.unlockCanvasAndPost(c);
}
synchronized (this) {
//Optional but saves battery life.
//You may compute the value to match a given max framerate..
this.wait(SOME_DELAY_IN_MS);
}
}
}
}
Где mSurfaceHolder получается путем вызова yourSurfaceView.getHolder()
, а doDraw
- это место, где вы вызываете canvas.drawPath()
и весь ваш код для рисования.