AChartEngine应用之LineChart(模拟动态生命特征值图)
接着上一次写的内容,构建动态曲线图,并产生与用户交互,考虑到数据都是活动的,不可能总是用静态数据,所以我下面的demo就是模拟。项目作用:模拟生命特征值图,动态显示分钟脉搏生命特征值走向每隔1000ms产生50组数据,并填充到表格中,主要使用的到是Handler+Task,因为我是用Activity显示这个表格每次产生的数据都需要快速的填充到主线程UI中,所以我就用Handler,这里的数据我都是采用随机数表示,这个demo可以作为开发医疗设备显示生命症状的表格信息参考,实际项目中如果需要用的每隔XX时间产生XX数据,最好是用Web提供数据,这样可以实现多个客户端 共享数据
构建LineChart图的步骤主要分为以下四步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activityandroid:name="org.achartengine.GraphicalActivity" />
1. 设置XYMultipleSeriesRenderer
mXYRenderer = buildRenderer(color, style, true); mXYRenderer.setShowGrid(true);// 显示表格 mXYRenderer.setGridColor(Color.GREEN);// 据说绿色代表健康色调,不过我比较喜欢灰色 mXYRenderer.setXLabels(20); mXYRenderer.setYLabels(10); mXYRenderer.setYLabelsAlign(Align.RIGHT);// 右对齐 // mXYRenderer.setPointSize((float) 2); mXYRenderer.setShowLegend(false);// 不显示图例 mXYRenderer.setZoomEnabled(false); mXYRenderer.setPanEnabled(true, false); mXYRenderer.setClickEnabled(false); setChartSettings(mXYRenderer, title, "时间", "数量", 0, X, 0, Y, Color.WHITE, Color.WHITE);// 这个是采用官方APIdemo提供给的方法 // 设置好图表的样式 |
2. 构建数据源CategorySeries
series = new XYSeries(title);// 这个类用来放置曲线上的所有点,是一个点的集合,根据这些点画出曲线 mDataset = new XYMultipleSeriesDataset(); // 创建一个数据集的实例,这个数据集将被用来创建图表 mDataset.removeSeries(series);// 移除数据集中旧的点集 series.clear();// 点集先清空,为了做成新的点集而准备
for (int k = 0; k < X; k++) {// 实际项目中这些数据最好是由线程搞定,可以从WebService中获取 int y = (int) (Math.random() * Y); series.add(k, y); } mDataset.addSeries(series);// 在数据集中添加新的点集 mViewChart.invalidate();// 视图更新,没有这一步,曲线不会呈现动态 |
3. 通过ChartFactory.getLineChartView生成曲线图
mViewChart = ChartFactory.getLineChartView(context, mDataset, mXYRenderer);// 通过ChartFactory生成图表
mLayout.addView(mViewChart, new LayoutParams(LayoutParams.FILL_PARENT,
|