Android开发中使用achartengine绘制各种图表的方法
本文实例讲述了Android开发中使用achartengine绘制各种图表的方法。分享给大家供大家参考,具体如下:
1.ABarChart.java
packagecom.anjoyo.achartengine;
importjava.util.Random;
importorg.achartengine.ChartFactory;
importorg.achartengine.chart.BarChart.Type;
importorg.achartengine.model.CategorySeries;
importorg.achartengine.model.XYMultipleSeriesDataset;
importorg.achartengine.renderer.SimpleSeriesRenderer;
importorg.achartengine.renderer.XYMultipleSeriesRenderer;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.graphics.Color;
publicclassABarChart{
publicIntentexecute(Contextcontext){
returnChartFactory.getBarChartIntent(context,getBarChartDataset(),getBarChartRenderer(),Type.DEFAULT);
}
privateXYMultipleSeriesRenderergetBarChartRenderer(){
//TODOAuto-generatedmethodstub
XYMultipleSeriesRendererrenderer=newXYMultipleSeriesRenderer();
SimpleSeriesRendererr;
r=newSimpleSeriesRenderer();
r.setColor(Color.BLUE);
renderer.addSeriesRenderer(r);
r=newSimpleSeriesRenderer();
r.setColor(Color.GREEN);
renderer.addSeriesRenderer(r);
setBarChartRenderer(renderer);
returnrenderer;
}
privatevoidsetBarChartRenderer(XYMultipleSeriesRendererrenderer){
//TODOAuto-generatedmethodstub
renderer.setChartTitle("BarChart");
renderer.setXTitle("XAxis");
renderer.setYTitle("YAxis");
renderer.setXAxisMax(10.5);
renderer.setXAxisMin(0.5);
renderer.setYAxisMax(210);
renderer.setYAxisMin(0);
}
privateXYMultipleSeriesDatasetgetBarChartDataset(){
//TODOAuto-generatedmethodstub
XYMultipleSeriesDatasetdataset=newXYMultipleSeriesDataset();
finalintSERIES_NR=2;
finalintNR=10;
Randomrandom=newRandom();
for(inti=0;i
2.ABubbleChart.java
packagecom.anjoyo.achartengine;
importjava.util.Random;
importorg.achartengine.ChartFactory;
importorg.achartengine.chart.PointStyle;
importorg.achartengine.model.XYMultipleSeriesDataset;
importorg.achartengine.model.XYValueSeries;
importorg.achartengine.renderer.XYMultipleSeriesRenderer;
importorg.achartengine.renderer.XYSeriesRenderer;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.graphics.Color;
publicclassABubbleChart{
privatefinalintSERIES_NR=3;
privatefinalintNR=20;
publicIntentexecute(Contextcontext){
returnChartFactory.getBubbleChartIntent(context,
getBubbleChartDataset(),getBubbleChartRenderer(),
"BubbleChartDemo");
}
privateXYMultipleSeriesRenderergetBubbleChartRenderer(){
//TODOAuto-generatedmethodstub
XYMultipleSeriesRendererrenderer=newXYMultipleSeriesRenderer();
int[]linearColor={Color.RED,Color.GREEN,Color.BLUE};
XYSeriesRendererr;
for(inti=0;i(key,value);
r=newXYSeriesRenderer();
r.setColor(linearColor[i]);
r.setPointStyle(PointStyle.POINT);
r.setLineWidth(2);
renderer.addSeriesRenderer(r);
}
setBarChartRenderer(renderer);
returnrenderer;
}
privateXYMultipleSeriesDatasetgetBubbleChartDataset(){
//TODOAuto-generatedmethodstub
XYMultipleSeriesDatasetdataset=newXYMultipleSeriesDataset();
for(inti=0;i
3.ALinearChart.java
packagecom.anjoyo.achartengine;
importjava.util.Random;
importorg.achartengine.ChartFactory;
importorg.achartengine.chart.PointStyle;
importorg.achartengine.model.XYMultipleSeriesDataset;
importorg.achartengine.model.XYSeries;
importorg.achartengine.renderer.XYMultipleSeriesRenderer;
importorg.achartengine.renderer.XYSeriesRenderer;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.graphics.Color;
publicclassALinearChart{
privatefinalintSERIES_NR=3;
privatefinalintNR=20;
publicIntentexecute(Contextcontext){
returnChartFactory.getLineChartIntent(context,getLinearChartDataset(),getLinearChartRenderer(),"LinearChartAnother");
}
privateXYMultipleSeriesRenderergetLinearChartRenderer(){
//TODOAuto-generatedmethodstub
int[]linearColor={Color.RED,Color.GREEN,Color.BLUE};
int[]belowLinearColor={Color.YELLOW,Color.CYAN,Color.GRAY};
XYMultipleSeriesRendererrenderer=newXYMultipleSeriesRenderer();
XYSeriesRenderertempRender;
for(inti=0;i
4.APieChart.java
packagecom.anjoyo.achartengine;
importorg.achartengine.ChartFactory;
importorg.achartengine.model.CategorySeries;
importorg.achartengine.renderer.DefaultRenderer;
importorg.achartengine.renderer.SimpleSeriesRenderer;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.graphics.Color;
publicclassAPieChart{
privatedouble[]values={25,30,45};
publicAPieChart(){
//TODOAuto-generatedconstructorstub
}
publicAPieChart(double[]values){
if(values.length==3){
for(inti=0;i
5.MainActivity.java
packagecom.anjoyo.achartengine;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.view.Menu;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassMainActivityextendsActivity{
privateButtonlineChartBtn;
privateButtonareaChartBtn;
privateButtonscatterChartBtn;
privateButtontimeChartBtn;
privateButtonbarChartBtn;
privateButtonpieChartBtn;
privateButtonbubbleChartBtn;
privateButtondoughnutChartBtn;
privateButtonrangeBarChartBtn;
privateButtondialChartBtn;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lineChartBtn=(Button)findViewById(R.id.line_chart);
areaChartBtn=(Button)findViewById(R.id.area_chart);
scatterChartBtn=(Button)findViewById(R.id.scatter_chart);
timeChartBtn=(Button)findViewById(R.id.time_chart);
barChartBtn=(Button)findViewById(R.id.bar_chart);
pieChartBtn=(Button)findViewById(R.id.pie_chart);
bubbleChartBtn=(Button)findViewById(R.id.bubble_chart);
doughnutChartBtn=(Button)findViewById(R.id.doughnut_chart);
rangeBarChartBtn=(Button)findViewById(R.id.range_bar_chart);
dialChartBtn=(Button)findViewById(R.id.dial_chart);
OnClickListenerlistener=newAChartEngineListener();
lineChartBtn.setOnClickListener(listener);
pieChartBtn.setOnClickListener(listener);
barChartBtn.setOnClickListener(listener);
bubbleChartBtn.setOnClickListener(listener);
}
classAChartEngineListenerimplementsOnClickListener{
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
switch(v.getId()){
caseR.id.line_chart:
//Intentintent=newIntent(MainActivity.this,LinearChartActivity.class);
//startActivity(intent);
IntentlinearChartIntent=newALinearChart().execute(MainActivity.this);
startActivity(linearChartIntent);
break;
caseR.id.area_chart:
break;
caseR.id.scatter_chart:
break;
caseR.id.time_chart:
break;
caseR.id.bar_chart:
IntentbarChartIntent=newABarChart().execute(MainActivity.this);
startActivity(barChartIntent);
break;
caseR.id.pie_chart:
IntentpieChartIntent=newAPieChart().execute(MainActivity.this);
startActivity(pieChartIntent);
break;
caseR.id.bubble_chart:
IntentbubbleChartIntent=newABubbleChart().execute(MainActivity.this);
startActivity(bubbleChartIntent);
break;
caseR.id.doughnut_chart:
break;
caseR.id.range_bar_chart:
break;
caseR.id.dial_chart:
break;
default:
break;
}
}
}
}
6.LinearChartActivity.java
packagecom.anjoyo.achartengine;
importjava.util.Random;
importorg.achartengine.ChartFactory;
importorg.achartengine.GraphicalView;
importorg.achartengine.chart.PointStyle;
importorg.achartengine.model.XYMultipleSeriesDataset;
importorg.achartengine.model.XYSeries;
importorg.achartengine.renderer.XYMultipleSeriesRenderer;
importorg.achartengine.renderer.XYSeriesRenderer;
importandroid.app.Activity;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.view.ViewGroup.LayoutParams;
importandroid.widget.LinearLayout;
publicclassLinearChartActivityextendsActivity{
privateXYMultipleSeriesDatasetdataset=newXYMultipleSeriesDataset();
privateXYMultipleSeriesRendererrenderer=newXYMultipleSeriesRenderer();
privateXYSeriescurrentSeries;
privateXYSeriesRenderercurrentRenderer;
privateStringdateFormat;
privateGraphicalViewchartView;
@Override
protectedvoidonRestoreInstanceState(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onRestoreInstanceState(savedInstanceState);
dataset=(XYMultipleSeriesDataset)savedInstanceState
.getSerializable("dataset");
renderer=(XYMultipleSeriesRenderer)savedInstanceState
.getSerializable("renderer");
currentSeries=(XYSeries)savedInstanceState
.getSerializable("current_series");
currentRenderer=(XYSeriesRenderer)savedInstanceState
.getSerializable("current_renderer");
dateFormat=savedInstanceState.getString("date_format");
}
@Override
protectedvoidonSaveInstanceState(BundleoutState){
//TODOAuto-generatedmethodstub
super.onSaveInstanceState(outState);
outState.putSerializable("dataset",dataset);
outState.putSerializable("renderer",renderer);
outState.putSerializable("current_series",currentSeries);
outState.putSerializable("current_renderer",currentRenderer);
outState.putString("date_format",dateFormat);
}
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.stock_chart);
StringseriesTitle="上证指数";
XYSeriesseries=newXYSeries(seriesTitle);
dataset.addSeries(series);
currentSeries=series;
XYSeriesRendererseriesRenderer=newXYSeriesRenderer();
seriesRenderer.setColor(Color.BLUE);
seriesRenderer.setFillBelowLine(true);
//seriesRenderer.setFillBelowLineColor(Color.RED);//折线下面区域是否添加颜色
seriesRenderer.setPointStyle(PointStyle.POINT);
seriesRenderer.setLineWidth(3);
renderer.addSeriesRenderer(seriesRenderer);
//添加另外一条曲线图
//seriesRenderer=newXYSeriesRenderer();
//seriesRenderer.setColor(Color.GREEN);
//seriesRenderer.setFillBelowLine(true);
//seriesRenderer.setFillBelowLineColor(Color.YELLOW);
//seriesRenderer.setPointStyle(PointStyle.POINT);
//seriesRenderer.setLineWidth(3);
//renderer.addSeriesRenderer(seriesRenderer);
renderer.setYAxisMin(0);
renderer.setYAxisMax(100);
renderer.setXAxisMax(20);
renderer.setShowGrid(false);
renderer.setXLabels(20);
renderer.setChartTitle("上证指数-24小时趋势图");
currentRenderer=seriesRenderer;
doublex=0;
doubley=0;
int[][]xyValues=getValues();
//for(inti=0;i<2;i++){
//
for(intj=0;j
7.AndroidManifest.xml
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。