1. 首先下载achartengine.jar包并成功导入工程当中。
方法:需要画折线图的工程,右击工程,build path->add libraries->user libraries点击next->点击user libraries->点击new->起个名字然后点击ok,选中新建的library,点击add jars,添加下载的achartengine.jar即可。
2.在工程的清单文件AndroidManifest.xml中添加<activity android:name="org.achartengine.GraphicalActivity" />这是为了声明折线图
3.在折线图出现的活动中填写如下代码:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] titles = new String[] {"实体1","实体2"};//曲线代表的实体
List x = new ArrayList();//存放横坐标
List y = new ArrayList();//存放纵坐标
x.add(new double[] { 1, 2, 3, 4, 5, 6,7} );//第一个实体的横坐标
x.add(new double[] { 1, 2, 3, 4, 5, 6,7} );//第二个实体的横坐标
y.add(new double[] { 3.11, 3.45, 3.77, 4.44, 4.00, 4.46,5.00});//第一个实体的纵坐标
y.add(new double[] { 3.7, 4.1, 5.00, 3.6, 4.0, 4.6,3.9});//第二个实体的纵坐标
XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);
int[] colors = new int[] { Color.RED,Color.GREEN}; //第一个和第二个实体的颜色
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,PointStyle.DIAMOND}; //第一个和第二个实体点的形状
XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, true);
setChartSettings(renderer, "标题", "x轴名称", "y轴名称", 0, 20, 0, 5 , Color.BLACK, Color.BLACK);
View chart = ChartFactory.getLineChartView(this, dataset, renderer);
setContentView(chart);
}
protected XYMultipleSeriesDataset buildDataset(String[] titles,
List xValues,
List yValues)
{
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length; //有几条线
for (int i = 0; i < length; i++)
{
XYSeries series = new XYSeries(titles[i]); //根据每条线的名称创建
double[] xV = (double[]) xValues.get(i); //获取第i条线的数据
double[] yV = (double[]) 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 renderer = 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);
renderer.addSeriesRenderer(r);
}
return renderer;
}
protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title,
String xTitle,String yTitle, double xMin,
double xMax, double yMin, double yMax,
int axesColor,int labelsColor)
{
renderer.setChartTitle(title);//设置标题文本内容
renderer.setLabelsTextSize(15); // 设置轴标签文本大小
renderer.setLabelsColor(Color.BLACK);
renderer.setLegendTextSize(20);// 设置图例文本大小
renderer.setAxisTitleTextSize(20);// 设置坐标轴标题文本大小
renderer.setChartTitleTextSize(30); // 设置图表标题文本大小
renderer.setShowGrid(true);//设置是否在图表中显示网格
renderer.setXLabels(20);//设置X轴显示的刻度标签的个数
renderer.setYLabels(40);//设置X轴显示的刻度标签的个数
renderer.setXLabelsColor(Color.BLACK);//设置横坐标刻度的颜色
renderer.setYLabelsColor(0, Color.BLACK);//设置纵坐标刻度的颜色
renderer.setRange(new double[]{0d, 5d, 0d, 100d}); //设置chart的视图范围
renderer.setPanLimits(new double[] { 0, 20, 0, 5.5 });//设置拉动的范围
renderer.setPointSize(5);//设置点的大小
renderer.setXTitle(xTitle); //设置x轴的标题
renderer.setYTitle(yTitle);//设置y轴的标题
renderer.setXAxisMin(0); //设置初始化的x轴最小值
renderer.setXAxisMax(xMax);//设置初始化的x轴最大值
renderer.setYAxisMin(0);//设置初始化的y轴最小值
renderer.setYAxisMax(5.5);//设置初始化的y轴最大值
renderer.setApplyBackgroundColor(true);//设置背景网格
renderer.setAxesColor(Color.BLACK);//设置坐标轴的颜色
renderer.setBackgroundColor(0xff96DDF1);//设置背景的颜色
renderer.setMarginsColor(0xff96DDF1);//设置边缘背景的颜色
}
}
//任务结束
ps:网上许多材料对renderer中的方法注释不完整,笔者在这里介绍的详细一些,希望对读者有所帮助。有的读者放映复制代码后会报错,大多都是导包的问题,下面列出所用到的包以便参考。
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.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;