当前位置:   article > 正文

AChartEngine图标库之动态柱状图_axchart_engine

axchart_engine

效果图




核心代码:

1 设置点集

  1. <span style="font-size:18px;"> //设置点集
  2. private XYMultipleSeriesDataset getDataset() {
  3. mDataset = new XYMultipleSeriesDataset();
  4. series = new XYSeries("柱状图");
  5. mDataset.addSeries(series);
  6. return mDataset;
  7. }</span>

2 设置描绘器
  1. <span style="font-size:18px;">private XYMultipleSeriesRenderer getRender() {
  2. mRender = new XYMultipleSeriesRenderer();
  3. setRenderer(mRender, color);
  4. setChartSettings(mRender, title, xMessage, yMessage, yMin, yMax);
  5. mRender.setXLabels(0);//取消X轴数据,自定义显示
  6. mRender.setYLabels(10);//Y轴10等分
  7. mRender.setClickEnabled(true);//不允许点击事件
  8. mRender.setPanEnabled(false, false);//不允许移动
  9. mRender.setShowGrid(true);//显示表格
  10. mRender.setBarSpacing(0.5f);//设置表格的宽度,柱子的宽度也会有所变化
  11. return mRender;
  12. }</span>

3 构建图表

  1. mChartView = ChartFactory.getBarChartView(context, getDataset(),
  2. getRender(), BarChart.Type.DEFAULT);

4 计时器定时刷新

  1. private void sendMessage() {
  2. handler = new Handler() {
  3. @Override
  4. public void handleMessage(Message msg) {
  5. if (msg.what == 1) {
  6. updateChart();
  7. }
  8. super.handleMessage(msg);
  9. }
  10. };
  11. task = new TimerTask() {
  12. @Override
  13. public void run() {
  14. Message message = new Message();
  15. message.what = 1;
  16. handler.sendMessage(message);
  17. }
  18. };
  19. timer.schedule(task, 0, 1000);
  20. }

5 刷新

  1. private void updateChart() {
  2. //随机数模拟数据
  3. int data = (int) (Math.random() * 100);
  4. //x轴显示当前时间(仅仅显示分,秒)
  5. String xDate = nowTime.format(new java.util.Date());
  6. //得到x轴上柱子的数量
  7. int lenght = series.getItemCount();
  8. //此处显示柱子显示的最大数量
  9. if (lenght > xLengh) {
  10. lenght = xLengh;
  11. }
  12. //移除点集
  13. mDataset.removeSeries(series);
  14. //x轴当前点数小于最大点数则直接添加,否则先移除旧点,再添加新点,并转换坐标实现移动效果
  15. if (lenght < xLengh) {
  16. series.add(lenght + 1, data);
  17. mRender.addXTextLabel(lenght + 1, xDate);
  18. xKedu[lenght] = xDate;
  19. } else {
  20. for (int i = 0; i < lenght - 1; i++) {
  21. catchs[i] = (float) (series.getY(i + 1));
  22. xKedu[i] = xKedu[i + 1];
  23. }
  24. series.clear();
  25. for (int i = 0; i < lenght - 1; i++) {
  26. series.add(i + 1, catchs[i]);
  27. mRender.addXTextLabel(i + 1, xKedu[i]);
  28. }
  29. xKedu[xLengh - 1] = xDate;
  30. series.add(xLengh, data);
  31. mRender.addXTextLabel(xLengh, xDate);
  32. }
  33. mDataset.addSeries(series);
  34. //这里实现图表的移动效果
  35. mChartView.invalidate();
  36. }


源码地址:

http://download.csdn.net/detail/huiling815/9653478

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/106661
推荐阅读
相关标签
  

闽ICP备14008679号