网友通过本文主要向大家介绍了android achartengine,achartengine画折线图,achartengine折线图,achartengine,achartengine教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android通过achartengine画折线图,achartengine折线图
因为前段时间Android项目中用到了折线图的功能,在查资料的过程中发现achartengine这个包有非常强大的画图功能,正好最近有时间,就整理一下方便以后查看。
首先要使用画图功能,就必须在lib中引入achartengine包。为了使用方便,直接使用示例中的两个文件,源码如下:
IDemoChart.java

import android.content.Context; import android.content.Intent; /** * Defines the demo charts. */ public interface IDemoChart { /** A constant for the name field in a list activity. */ String NAME = "name"; /** A constant for the description field in a list activity. */ String DESC = "desc"; /** * Returns the chart name. * * @return the chart name */ String getName(); /** * Returns the chart description. * * @return the chart description */ String getDesc(); /** * Executes the chart demo. * * @param context the context * @return the built intent */ Intent execute(Context context); }

AbstractDemoChart.java

1 import java.util.Date; 2 import java.util.List; 3 4 import org.achartengine.chart.PointStyle; 5 import org.achartengine.model.CategorySeries; 6 import org.achartengine.model.MultipleCategorySeries; 7 import org.achartengine.model.TimeSeries; 8 import org.achartengine.model.XYMultipleSeriesDataset; 9 import org.achartengine.model.XYSeries; 10 import org.achartengine.renderer.DefaultRenderer; 11 import org.achartengine.renderer.SimpleSeriesRenderer; 12 import org.achartengine.renderer.XYMultipleSeriesRenderer; 13 import org.achartengine.renderer.XYSeriesRenderer; 14 15 import android.app.Activity; 16 17 /** 18 * An abstract class for the demo charts to extend. It contains some methods for 19 * building datasets and renderers. 20 */ 21 public abstract class AbstractDemoChart extends Activity implements IDemoChart { 22 23 /** 24 * Builds an XY multiple dataset using the provided values. 25 * 26 * @param titles the series titles 27 * @param xValues the values for the X axis 28 * @param yValues the values for the Y axis 29 * @return the XY multiple dataset 30 */ 31 protected XYMultipleSeriesDataset buildDataset(String[] titles, List<double[]> xValues, 32 List<double[]> yValues) { 33 XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 34 addXYSeries(dataset, titles, xValues, yValues, 0); 35 return dataset; 36 } 37 38 public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles, List<double[]> xValues, 39 List<double[]> yValues, int scale) { 40 int length = titles.length; 41 for (int i = 0; i < length; i++) { 42 XYSeries series = new XYSeries(titles[i], scale); 43 double[] xV = xValues.get(i); 44 double[] yV = yValues.get(i); 45 int seriesLength = xV.length; 46 for (int k = 0; k < seriesLength; k++) { 47 series.add(xV[k], yV[k]); 48 } 49 dataset.addSeries(series); 50 } 51 } 52 53 /** 54 * Builds an XY multiple series renderer. 55 * 56 * @param colors the series rendering colors 57 * @param styles the series point styles 58 * @return the XY multiple series renderers 59 */ 60 protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles) { 61 XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 62 setRenderer(renderer, colors, styles); 63 return renderer; 64 } 65 66 protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors, PointStyle[] styles) { 67 renderer.setAxisTitleTextSize(16); 68 renderer.setChartTitleTextSize(20); 69 renderer.setLabelsTextSize(15); 70 renderer.setLegendTextSize(15); 71 renderer.setPointSize(5f); 72 renderer.setMargins(new int[] { 20, 30, 15, 20 }); 73 int length = colors.length; 74 for (int i = 0; i < length; i++) { 75 XYSeriesRenderer r = new XYSeriesRenderer(); 76 r.setColor(colors[i]); 77 r.setPointStyle(styles[i]); 78 renderer.addSeriesRenderer(r); 79 } 80 } 81 82 /** 83 * Sets a few of the