Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在mpandroidchart中实时显示图表?_Java_Android_Charts_Mpandroidchart_Linechart - Fatal编程技术网

Java 如何在mpandroidchart中实时显示图表?

Java 如何在mpandroidchart中实时显示图表?,java,android,charts,mpandroidchart,linechart,Java,Android,Charts,Mpandroidchart,Linechart,我正在使用 我需要实时显示折线图。但问题是,它是在整个完成后显示的。事实上,它应该像实时一样绘制。我试过的是 private void updateUI(final ArrayList<TimeModel> pJsonObject) { for(int i=0;i<pJsonObject.size();i++){ int speedRates = pJsonObject.get(i).getSpeedRate(); String

我正在使用 我需要实时显示折线图。但问题是,它是在整个完成后显示的。事实上,它应该像实时一样绘制。我试过的是

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);
 }
private void updateUI(最终ArrayList pJsonObject){

对于(int i=0;i这里是代码。它启动线程,然后在循环中向图表添加条目(本例中为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();
例如,在您的情况下:

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

请参考此链接,它可能会对您有所帮助:请查看我的实时图形答案:谢谢@MishaAkopov让我知道在与我的代码进行比较时需要添加的所有行是什么?请您通过编辑我的代码来回答。这样我就可以接受并关闭它。@Shiv在您的代码中,您一次拥有所有点,这就是为什么图形会立即绘制的原因。您想以一定的间隔一次绘制一个点的图形,例如1秒?是的,您是对的@MishaAkopov我需要以1秒的间隔显示。我需要在添加条目中使用什么?简单地说,我需要类似于此。我尝试使用//linechart.animateXY(4000,4000);linechart.animateY(4000,Easing.EasingOption.EaseInBack);但没有什么能完美工作。:(请参阅更新的答案,4000毫秒对于设置多个点的动画来说太小了,您应该为每个点设置1000毫秒,并将获得所有点的实时体验
mChart.animateX(1000 * xAxes.size());