Как отобразить график в реальном времени в mpandroidchart? - PullRequest
0 голосов
/ 29 мая 2018

Я использую MPAndroidChart Мне нужно отобразить график в реальном времени.Но проблема в том, что он отображается после всего завершенного.На самом деле он должен сюжет как в реальном времени.То, что я пробовал, это

private void updateUI(final ArrayList<TimeModel> pJsonObject) {

for(int i=0;i<pJsonObject.size();i++){
            int speedRates = pJsonObject.get(i).getSpeedRate();
            String time = String.valueOf(pJsonObject.get(i).getTotalTime());
            xAxes.add(time);
            //yAxes.add(new Entry(10, 0));
            yAxes.add(new Entry(speedRates,i));
        }
        String[] xaxes = new String[xAxes.size()];
        for (int i = 0; i < xAxes.size(); i++) {
            xaxes[i] = xAxes.get(i).toString();
        }

        LineDataSet lineDataSet = new LineDataSet(yAxes, "Time");

        lineDataSet.setDrawCircles(true);
        lineDataSet.setColor(Color.GREEN);

        lineDataSets.add(lineDataSet);

        linechart.setData(new LineData(xaxes, lineDataSets));
        linechart.setVisibleXRangeMaximum(65f);
//        linechart.setTouchEnabled(true);
//        linechart.setDragEnabled(true);

        linechart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);

        linechart.getAxisLeft().setDrawGridLines(false);
        linechart.getXAxis().setDrawGridLines(false);


        YAxis yAxisRight = linechart.getAxisRight();
        yAxisRight.setEnabled(false);

        linechart.animateXY(3000, 3000);
 }

Но это заговор как завершенный.Мне нужно построить график в реальном времени на графике mpandroid.

1 Ответ

0 голосов
/ 29 мая 2018

Вот код.Он запускает поток, затем в цикле вы добавляете записи на график (в данном случае 500 точек), и после каждого добавления поток спит в течение 1000 миллисекунд (1 секунда), и это ваш интервал:

    new Thread(new Runnable() {

        @Override
        public void run() {
            for(int i = 0; i < 500; i++) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        addEntry();
                    }
                });

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
            }
        }
    }).start();

Дляпросто анимацию с интервалом 1 секунда для каждой точки, используйте, например,

mChart.animateX(1000 * pointCount);

, в вашем случае:

mChart.animateX(1000 * xAxes.size());
...