如何使用与示波器类似的achartengine绘制实时图形

时间:2013-01-30 16:28:15

标签: java android eclipse achartengine

我正在使用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;

            }

有人可以帮我解决这个问题。感谢任何人的帮助。

2 个答案:

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

这将关心您返回光标并在到达数据末尾后重复动画。