AchartEngine图表库之动态折线图(多条)

炫酷效果图


实现步骤

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.csdn.net/detail/huiling815/9651808

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值