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());