我正在使用achartengine。我必须读取一个txt文件并绘制图形。我得到了图表情节。但是,我想要做的是当图形到达布局视图的末尾时,它应该从开始视图绘制,类似于示波器视图。 我希望我的图表与此链接中的图表完全相似
http://www.youtube.com/watch?v=N6BuRqeUhqc.
到目前为止,我所做的是:
private class ChartTask extends AsyncTask<Void, String, Void>{
String[] values = new String[2];int i1=0;
// Generates dummy data in a non-ui thread
@Override
protected Void doInBackground(Void... params) {
int i = 0;
try{
do{
values[0] = Integer.toString(i);
values[1] = Integer.toString(amplitude[i]);
if(i<=600){
multiRenderer.setXAxisMax(600);
}
else if(i>600){
double minX = amplitudeSeries.getMaxX();
multiRenderer.setXAxisMin(minX);
}
publishProgress(values);
Thread.sleep(1);
i++;
}while(i<=amplitude.length);}
catch (Exception e1){
}
return null;
}
有人可以帮我解决这个问题。感谢任何人的帮助。
答案 0 :(得分:1)
使用AChartEngine绘制动态图表应该很容易。只需更新数据集的内容并致电chartView.repaint()
。
答案 1 :(得分:0)
这是一个动画任务。使用Bitmap保存图表并使用timer定期绘制每个调用一个X,Y对到位图。之后,调用invalidate()重新绘制设备屏幕上的位图。
你需要的最后一件事是一个简单的mod操作。以下是此定期调用代码的可能代码片段:
// Get position in bitmap from the iteration index
int ig = mIteration % bitmap.getWidth();
// Erase the vertical line in bitmap
for (int y = 0, y < bitmap.getHeight(); i++)
bitmap.setPixel(ig, y, Color.WHITE);
// Plot the point
bitmap.setPixel(ig, data[mIteration], Color.BLACK);
// Advance mIteration field value.
mIteration = (mIteration + 1) % data.length;
// Force to repaint component containing the bitmap.
invalidate();
这将关心您返回光标并在到达数据末尾后重复动画。