方法一:
其实图表的数据来源于坐标点,只需要增加坐标点,来改变一下显示坐标的范围就可以实现动态图了
getLineChartView(Context context,
XYMultipleSeriesDataset dataset,
XYMultipleSeriesRenderer renderer);
此方法当中的参数dataset就是你的折线图数据集合了,实际使用时是通过调用dataset.addSeries(XYSeries series)、dataset.addSeries(A线条数据集)、dataset.addSeries(B线条数据集)……这种方式添加数据的,因为addSeries中的参数series是一个引用类型的变量,所以你的series被添加进去后只要没重新实例化,那么你在图表外部操作这个series比如往里面增加一个点,还是会有效地影响到图表。
Button reload = (Button)getActivity().findViewById(R.id.reloadaj);
reload.setOnClickListener(new OnClickListener()
{
double i = 1;
double x = 10;
public void onClick(View v) {
// TODO Auto-generated method stub
dataset.getSeries()[0].add(x,new Random().nextInt(27));
dataset.getSeries()[1].add(x,new Random().nextInt(27));
//移动一下显示范围,形成动态图效果
renderer.setRange(new double[]{i,x+1, 0d, 30d});
i++;
x++;
//刷新折线图
view.repaint();
}
});
如果后台是时间加值一个一个点的数据回来,要想实现好一点的效果,好判断一下当点的数据超过显示的刻度在移动一下范围,
如果数组的点数太多了,要考虑一下把以前的点去掉,让其保持在一定的范围内,不能一直无限的增加数组的长度
上次看过一个说将旧点加一的方法来实现向右平移的效果,来模拟显示动态图是可以,但是实际中不会这么做,因为相当于改变了原来的坐标
,不符合真实的数据了