炫酷效果图
实现步骤
1 设置点集
<span style="font-size:18px;">public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
int scale) {
for (int i = 0; i < titles.length; i++) {
series = new XYSeries(titles[i], scale);
seriesList.add(series);
dataset.addSeries(series);
}
}</span>
2 设置描绘器和图表样式<span style="font-size:18px;">protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors,
PointStyle[] styles) {
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setPointSize(5f);
renderer.setMargins(new int[]{20, 30, 15, 20});// 上,左,下,右
for (int i = 0; i < titles.length; i++) {
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
r.setDisplayChartValues(true);
r.setLineWidth(2f);// 宽度
r.setFillPoints(true);// 完全填充
r.setChartValuesSpacing(3);
renderer.addSeriesRenderer(r);
}
}</span>
<span style="font-size:18px;"> protected void setChartSettings(XYMultipleSeriesRenderer renderer,
String title, String xTitle, String yTitle, double xMin,
double yMin, double yMax, int axesColor, int labelsColor) {
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);// X轴标题
renderer.setYTitle(yTitle);// Y轴标题
// renderer.setXAxisMin(xMin);// X最小值
renderer.setYAxisMin(yMin);// Y最小值
renderer.setYAxisMax(yMax);// Y最小值
renderer.setAxesColor(axesColor);// X轴颜色
renderer.setLabelsColor(labelsColor);// Y轴颜色
}</span>
3 Handler+Timer模拟数据刷新<span style="font-size:18px;">private void sendMessage() {
handle = new Handler() {
public void handleMessage(Message msg) {
updatechart();
}
};
task = new TimerTask() {
public void run() {
Message msg = new Message();
msg.what = 200;
handle.sendMessage(msg);
}
};
timer.schedule(task, 0, 1000);
}</span>
4 刷新图表<span style="font-size:18px;">String xKeduValue = nowTime.format(new java.util.Date());
//得到x轴上点的数量
int seriesItemLenght = seriesList.get(0).getItemCount();
// x轴控制显示10个数值
if (seriesItemLenght > xLenght) {
seriesItemLenght = xLenght;
}
// 移除旧的点集
for (int i = 0; i < titles.length; i++) {
dataset.removeSeries(seriesList.get(i));
}
if (seriesItemLenght < xLenght) {
for (int i = 0; i < titles.length; i++) {
seriesList.get(i).add(seriesItemLenght + 1, dataList.get(i));
}
renderer.addXTextLabel(seriesItemLenght + 1, xKeduValue);
xkedu[seriesItemLenght] = xKeduValue;
} else {
// 将x,y数值缓存
for (int i = 0; i < seriesItemLenght - 1; i++) {
for (int j = 0; j < titles.length; j++) {
catchList.get(j)[i] = (float) seriesList.get(j).getY(i + 1);
}
xkedu[i] = xkedu[i + 1];
}
// 移除旧点
for (int i = 0; i < titles.length; i++) {
seriesList.get(i).clear();
}
// 添加新点,变换坐标
for (int i = 0; i < seriesItemLenght - 1; i++) {
for (int j = 0; j < titles.length; j++) {
seriesList.get(j).add(i + 1, catchList.get(j)[i]);
}
renderer.addXTextLabel(i + 1, xkedu[i]);
}
xkedu[xLenght - 1] = xKeduValue;
for (int i = 0; i < titles.length; i++) {
seriesList.get(i).add(xLenght, dataList.get(i));
}
renderer.addXTextLabel(xLenght, xKeduValue);
}
for (int i = 0; i < titles.length; i++) {
dataset.addSeries(seriesList.get(i));
}
mChartView.invalidate();</span>
源代码下载链接:
http://download.youkuaiyun.com/detail/huiling815/9651808