Achartengine画分段动态曲线

来源:互联网 发布:淘宝卖家账号多少钱 编辑:程序博客网 时间:2024/05/01 00:21

最近实验室做到的项目,需要在手机上实时显示从WIFI模块传过来的频谱数据,通过对比网上图库,最终选了achartengine,经过这两天的研究终于搞定,在此与大家分享。

频谱图的要求如下:

                 1,由于是实时数据,因此需要曲线能动态更新;

                  2,数据上传的速度不快,中间还有可能缺失,因此需要分段显示

                 3,横坐标轴是随着用户输入频率的范围的变化而变化

                

解决动态更新:使用了timeTak和handler的结合,定时扫描,定时重绘,其中update()是重回函数

                 

  handler = new Handler() {            @Override            public void handleMessage(Message msg) {                // 刷新图表                updateChart();                super.handleMessage(msg);            }        };        task = new TimerTask() {            @Override            public void run() {                Message message = new Message();                message.what = 1;                handler.sendMessage(message);            }        };        timer.schedule(task, 1000, 1000);

解决分段画的画法:

       XYMultipleSeriesDataset,XYMultipleSeriesRenderer分别是画线的点集数据容器和线条的颜色渲染,查看官网API发现他们是可以存放数组的;

        分段刷新的思路:将指定的曲线取出,换成要刷新的数据,再重新添加到数据集的指定位置;

        series=mDataset.getSeriesAt(data[0] - 1);  //找到数据容器中对应的曲线,
        mDataset.removeSeries(data[0] - 1);//将该曲线移除

         series.clear();//清除数据点集,为新数据做准备

        //填入新的数据

      for (int k = 0; k < 1024; k++) {
          series.add(xv[k], yv[k]);
         }


         // 在数据集中添加新的点集
       mDataset.addSeries(data[0] - 1, series);//最后将拥有新数据的曲线凡在指定位置


最后完成刷新:chart.invalidate();


附上代码示例地址:http://download.csdn.net/detail/sangsa/9416765




0 0
原创粉丝点击