4

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

            }

有人可以帮我弄这个吗。感谢任何人的帮助。

4

2 回答 2

1

使用AChartEngine绘制动态图表应该很容易。只需更新数据集的内容并调用chartView.repaint().

于 2013-02-02T16:38:34.623 回答
0

这是一个动画任务。使用Bitmap保存图表并使用计时器定期将每次调用的一对 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(); 

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

于 2013-01-31T07:55:26.410 回答