照着网上的源码一句一句敲下来的,终于可以运行了。
下载AChartEngine,导入到工程。
可能出现java.lang.NoClassDefFoundError: org.achartengine.model.XYMultipleSeriesDataset这个问题,解决方案。
package com.example.chart;
import java.util.ArrayList;
import java.util.List;
import org.achartengine.ChartFactory;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] titles = new String[]{"First" ,"Second"};
List<double[]> x = new ArrayList<double[]>();
List<double[]> y = new ArrayList<double[]>();
x.add(new double[]{1 ,3 ,5 ,7 ,9 ,11});
x.add(new double[]{0 ,2 ,4 ,6 ,8 ,10});
y.add(new double[]{3 ,14 ,5 ,30 ,20 ,25});
y.add(new double[]{18 ,9 ,21 ,15 ,10 ,6});
XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);
int []colors = new int[]{Color.BLUE ,Color.GREEN};
PointStyle[] styles = new PointStyle[]{PointStyle.CIRCLE ,PointStyle.DIAMOND};
XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, true);
setChartSetting(renderer, "Line Chart Demo", "X", "Y", -1, 12, 0, 35, Color.WHITE, Color.WHITE);
View Chart = ChartFactory.getLineChartView(this , dataset, renderer);
setContentView(Chart);
}
protected XYMultipleSeriesDataset buildDataset(String[] titles,
List<double[]> xValues ,List<double[]> yValues){
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for(int i = 0 ;i < length ;i++){
XYSeries series = new XYSeries(titles[i]);
double [] xV = xValues.get(i);
double [] yV = yValues.get(i);
int seriesLength = xV.length;
for(int k = 0 ;k < seriesLength ;k++){
series.add(xV[k], yV[k]);
}
dataset.addSeries(series);
}
return dataset;
}
protected XYMultipleSeriesRenderer buildRenderer(int[] colors ,
PointStyle[] styles ,boolean fill){
XYMultipleSeriesRenderer render = new XYMultipleSeriesRenderer();
int length = colors.length;
for(int i = 0 ;i < length ;i++){
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
r.setFillPoints(fill);
render.addSeriesRenderer(r);
}
return render;
}
protected void setChartSetting(XYMultipleSeriesRenderer render ,String title ,
String xTitle ,String yTitle ,double xMin ,double xMax ,double yMin ,
double yMax ,int axesColor ,int labelsColor){
render.setChartTitle(title);
render.setXTitle(xTitle);
render.setYTitle(yTitle);
render.setXAxisMin(xMin);
render.setXAxisMax(xMax);
render.setYAxisMin(yMin);
render.setYAxisMax(yMax);
render.setAxesColor(axesColor);
render.setLabelsColor(labelsColor);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}