Android实战简易教程<十六>(LineChart实现数据趋势展示)

aChartEngine中的line Chart是线图,是数据显示的一种。首先我们要下载aChartEngine的jar包,然后导入到工程中。

直接看一下代码(部分注释):

[java]  view plain copy
  1. package com.yayun.linechart;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.achartengine.ChartFactory;  
  7. import org.achartengine.chart.PointStyle;  
  8. import org.achartengine.model.XYMultipleSeriesDataset;  
  9. import org.achartengine.model.XYSeries;  
  10. import org.achartengine.renderer.XYMultipleSeriesRenderer;  
  11. import org.achartengine.renderer.XYSeriesRenderer;  
  12.   
  13. import android.app.Activity;  
  14. import android.graphics.Color;  
  15. import android.graphics.Paint.Align;  
  16. import android.os.Bundle;  
  17. import android.view.View;  
  18.   
  19. public class MainActivity extends Activity {  
  20.   
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         String[] titles = new String[] { "Crete""Corfu""Thassos",  
  25.                 "Skiathos" };//四个标题,也就是四个城市  
  26.         List<double[]> x = new ArrayList<double[]>();  
  27.         for (int i = 0; i < titles.length; i++) {  
  28.             x.add(new double[] { 123456789101112 });//X轴数值  
  29.         }  
  30.         List<double[]> values = new ArrayList<double[]>();//要显示的数值  
  31.         values.add(new double[] { 12.312.513.816.820.424.426.4,  
  32.                 26.123.620.317.213.9 });  
  33.         values.add(new double[] { 1010121520242626231814,  
  34.                 11 });  
  35.         values.add(new double[] { 55.3812172224.224191596 });  
  36.         values.add(new double[] { 91011151923262522181310 });  
  37.         int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.CYAN,  
  38.                 Color.YELLOW };//四种显示颜色  
  39.         PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,  
  40.                 PointStyle.DIAMOND, PointStyle.TRIANGLE, PointStyle.SQUARE };//四种显示样式  
  41.         XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);  
  42.         int length = renderer.getSeriesRendererCount();  
  43.         for (int i = 0; i < length; i++) {  
  44.             ((XYSeriesRenderer) renderer.getSeriesRendererAt(i))  
  45.                     .setFillPoints(true);  
  46.         }  
  47.         setChartSettings(renderer, "Average temperature""Month",  
  48.                 "Temperature"0.512.5, -1040, Color.LTGRAY, Color.LTGRAY);  
  49.         renderer.setXLabels(12);  
  50.         renderer.setYLabels(10);  
  51.         renderer.setShowGrid(true);  
  52.         renderer.setXLabelsAlign(Align.RIGHT);  
  53.         renderer.setYLabelsAlign(Align.RIGHT);  
  54.   
  55.         renderer.setZoomButtonsVisible(true);//缩放按钮  
  56.         renderer.setPanLimits(new double[] { -1020, -1040 });  
  57.         renderer.setZoomLimits(new double[] { -1020, -1040 });  
  58.   
  59.         View view = ChartFactory.getLineChartView(this,  
  60.                 buildDataset(titles, x, values), renderer);//获取view  
  61.         view.setBackgroundColor(Color.BLACK);//背景颜色  
  62.         setContentView(view);  
  63.     }  
  64.   
  65.     private XYMultipleSeriesRenderer buildRenderer(int[] colors,  
  66.             PointStyle[] styles) {  
  67.         XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();  
  68.         setRenderer(renderer, colors, styles);  
  69.         return renderer;  
  70.     }  
  71.   
  72.     private void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors,  
  73.             PointStyle[] styles) {  
  74.         renderer.setAxisTitleTextSize(16);  
  75.         renderer.setChartTitleTextSize(20);  
  76.         renderer.setLabelsTextSize(15);  
  77.         renderer.setLegendTextSize(15);  
  78.         renderer.setPointSize(5f);  
  79.         renderer.setMargins(new int[] { 20301520 });  
  80.         int length = colors.length;  
  81.         for (int i = 0; i < length; i++) {  
  82.             XYSeriesRenderer r = new XYSeriesRenderer();  
  83.             r.setColor(colors[i]);  
  84.             r.setPointStyle(styles[i]);  
  85.             renderer.addSeriesRenderer(r);  
  86.         }  
  87.     }  
  88.   
  89.     private void setChartSettings(XYMultipleSeriesRenderer renderer,//坐标设置  
  90.             String title, String xTitle, String yTitle, double xMin,  
  91.             double xMax, double yMin, double yMax, int axesColor,  
  92.             int labelsColor) {  
  93.         renderer.setChartTitle(title);  
  94.         renderer.setXTitle(xTitle);  
  95.         renderer.setYTitle(yTitle);  
  96.         renderer.setXAxisMin(xMin);  
  97.         renderer.setXAxisMax(xMax);  
  98.         renderer.setYAxisMin(yMin);  
  99.         renderer.setYAxisMax(yMax);  
  100.         renderer.setAxesColor(axesColor);  
  101.         renderer.setLabelsColor(labelsColor);  
  102.     }  
  103.   
  104.     private XYMultipleSeriesDataset buildDataset(String[] titles,//创建数据集  
  105.             List<double[]> xValues, List<double[]> yValues) {  
  106.         XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();  
  107.         addXYSeries(dataset, titles, xValues, yValues, 0);  
  108.         return dataset;  
  109.     }  
  110.   
  111.     private void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,  
  112.             List<double[]> xValues, List<double[]> yValues, int scale) {  
  113.         int length = titles.length;  
  114.         for (int i = 0; i < length; i++) {  
  115.             XYSeries series = new XYSeries(titles[i], scale);  
  116.             double[] xV = xValues.get(i);  
  117.             double[] yV = yValues.get(i);  
  118.             int seriesLength = xV.length;  
  119.             for (int k = 0; k < seriesLength; k++) {  
  120.                 series.add(xV[k], yV[k]);  
  121.             }  
  122.             dataset.addSeries(series);  
  123.         }  
  124.     }  
  125. }  
运行实例的效果如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值