本文实例讲述了AndroID开发中使用achartengine绘制各种图表的方法。分享给大家供大家参考,具体如下:
1. AbarChart.java
package com.anjoyo.achartengine;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.chart.barChart.Type;import org.achartengine.model.categorySerIEs;import org.achartengine.model.XYMultipleSerIEsDataset;import org.achartengine.renderer.SimpleSerIEsRenderer;import org.achartengine.renderer.XYMultipleSerIEsRenderer;import androID.content.Context;import androID.content.Intent;import androID.graphics.color;public class AbarChart { public Intent execute(Context context) { return ChartFactory.getbarChartIntent(context,getbarChartDataset(),getbarChartRenderer(),Type.DEFAulT); } private XYMultipleSerIEsRenderer getbarChartRenderer() { // Todo @R_301_6843@-generated method stub XYMultipleSerIEsRenderer renderer=new XYMultipleSerIEsRenderer(); SimpleSerIEsRenderer r; r=new SimpleSerIEsRenderer(); r.setcolor(color.BLUE); renderer.addSerIEsRenderer(r); r=new SimpleSerIEsRenderer(); r.setcolor(color.GREEN); renderer.addSerIEsRenderer(r); setbarChartRenderer(renderer); return renderer; } private voID setbarChartRenderer(XYMultipleSerIEsRenderer renderer) { // Todo @R_301_6843@-generated method stub renderer.setChartTitle("bar Chart"); renderer.setXTitle("X Axis"); renderer.setYTitle("Y Axis"); renderer.setXAxisMax(10.5); renderer.setXAxisMin(0.5); renderer.setYAxisMax(210); renderer.setYAxisMin(0); } private XYMultipleSerIEsDataset getbarChartDataset() { // Todo @R_301_6843@-generated method stub XYMultipleSerIEsDataset dataset=new XYMultipleSerIEsDataset(); final int SERIES_NR=2; final int NR=10; Random random=new Random(); for (int i = 0; i < SERIES_NR; i++) { categorySerIEs serIEs=new categorySerIEs("bar Chart---"+(i+1)); for (int j = 0; j < NR; j++) { serIEs.add(100+random.nextInt(100)); } dataset.addSerIEs(serIEs.toXYSerIEs()); } return dataset; }}
2. ABubbleChart.java
package com.anjoyo.achartengine;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.chart.PointStyle;import org.achartengine.model.XYMultipleSerIEsDataset;import org.achartengine.model.XYValueSerIEs;import org.achartengine.renderer.XYMultipleSerIEsRenderer;import org.achartengine.renderer.XYSerIEsRenderer;import androID.content.Context;import androID.content.Intent;import androID.graphics.color;public class ABubbleChart { private final int SERIES_NR = 3; private final int NR = 20; public Intent execute(Context context) { return ChartFactory.getBubbleChartIntent(context,getBubbleChartDataset(),getBubbleChartRenderer(),"Bubble Chart Demo"); } private XYMultipleSerIEsRenderer getBubbleChartRenderer() { // Todo @R_301_6843@-generated method stub XYMultipleSerIEsRenderer renderer = new XYMultipleSerIEsRenderer(); int[] linearcolor = { color.RED,color.GREEN,color.BLUE }; XYSerIEsRenderer r; for (int i = 0; i < SERIES_NR; i++) { // entry=new XYEntry<Integer,Integer>(key,value); r = new XYSerIEsRenderer(); r.setcolor(linearcolor[i]); r.setPointStyle(PointStyle.POINT); r.setlinewidth(2); renderer.addSerIEsRenderer(r); } setbarChartRenderer(renderer); return renderer; } private XYMultipleSerIEsDataset getBubbleChartDataset() { // Todo @R_301_6843@-generated method stub XYMultipleSerIEsDataset dataset = new XYMultipleSerIEsDataset(); for (int i = 0; i < SERIES_NR; i++) { XYValueSerIEs serIEs = new XYValueSerIEs("Bubble Chart---" + (i + 1)); int temp = 10 * i; int[][] data = getBasicdata(); for (int j = 0; j < data.length; j++) { if((j+1)%5 ==0){ int x = data[j][0]; int y = temp; int value=data[j][1]+temp; serIEs.add(x,y,value); } } dataset.addSerIEs(serIEs); } return dataset; } private int[][] getBasicdata() { int[][] data = new int[20][2]; Random rand = new Random(); for (int i = 0; i < data.length; i++) { data[i][0] = i; data[i][1] = 20 + rand.nextInt(20) % 20; } return data; } private voID setbarChartRenderer(XYMultipleSerIEsRenderer renderer) { // Todo @R_301_6843@-generated method stub renderer.setChartTitle("Bubble Chart"); renderer.setXTitle("X Axis"); renderer.setYTitle("Y Axis"); renderer.setXAxisMax(20); renderer.setXAxisMin(0); renderer.setYAxisMax(30); renderer.setYAxisMin(0); renderer.setAntialiasing(true);//没有看出有啥效果来 renderer.setApplyBackgroundcolor(true);//设置背景颜色 renderer.setBackgroundcolor(color.transparent); renderer.setShowAxes(true);// renderer.setAxescolor(color.GRAY); renderer.setClickEnabled(true);//设置了之后,不可再拖动 renderer.setZoombuttonsVisible(true);//设置伸缩按钮是否可见 renderer.setZoomEnabled(true); renderer.setExternalZoomEnabled(true);//设置是否可以向伸缩 renderer.setLabelscolor(color.GREEN); renderer.setLabelsTextSize(16); }}
3. AlinearChart.java
package com.anjoyo.achartengine;import java.util.Random;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.content.Context;import androID.content.Intent;import androID.graphics.color;public class AlinearChart { private final int SERIES_NR=3; private final int NR=20; public Intent execute(Context context) { return ChartFactory.getlineChartIntent(context,getlinearChartDataset(),getlinearChartRenderer(),"linear Chart Another"); } private XYMultipleSerIEsRenderer getlinearChartRenderer() { // Todo @R_301_6843@-generated method stub int[] linearcolor={color.RED,color.BLUE}; int[] belowlinearcolor={color.YELLOW,color.CYAN,color.GRAY}; XYMultipleSerIEsRenderer renderer=new XYMultipleSerIEsRenderer(); XYSerIEsRenderer tempRender; for (int i = 0; i < SERIES_NR; i++) { tempRender=new XYSerIEsRenderer(); tempRender.setcolor(linearcolor[i]);// tempRender.setFillBelowline(true);// tempRender.setFillBelowlinecolor(belowlinearcolor[i]); tempRender.setPointStyle(PointStyle.POINT); tempRender.setlinewidth(2); renderer.addSerIEsRenderer(tempRender); } setlinearChartRenderer(renderer); return renderer; } private voID setlinearChartRenderer(XYMultipleSerIEsRenderer renderer) { // Todo @R_301_6843@-generated method stub renderer.setChartTitle("Three linear Chart"); renderer.setXAxisMax(20); renderer.setXAxisMin(0); renderer.setYAxisMax(60); renderer.setYAxisMin(0); } private XYMultipleSerIEsDataset getlinearChartDataset() { // Todo @R_301_6843@-generated method stub XYMultipleSerIEsDataset dataset=new XYMultipleSerIEsDataset(); for (int i = 0; i < SERIES_NR; i++) { XYSerIEs serIEs=new XYSerIEs("Stock Trend---"+(i+1)); int temp=10*i; int[][] data=getBasicdata(); for (int j = 0; j < data.length; j++) { int x=data[j][0]; int y=temp+data[j][1]; serIEs.add(x,y); } dataset.addSerIEs(serIEs); } return dataset; } private int[][] getBasicdata() { int[][] data=new int[20][2]; Random rand=new Random(); for (int i = 0; i < data.length; i++) { data[i][0]=i; data[i][1]=20+rand.nextInt(20)%20; } return data; }}
4. APIeChart.java
package com.anjoyo.achartengine;import org.achartengine.ChartFactory;import org.achartengine.model.categorySerIEs;import org.achartengine.renderer.DefaultRenderer;import org.achartengine.renderer.SimpleSerIEsRenderer;import androID.content.Context;import androID.content.Intent;import androID.graphics.color;public class APIeChart { private double[] values = { 25,30,45 }; public APIeChart() { // Todo @R_301_6843@-generated constructor stub } public APIeChart(double[] values) { if (values.length == 3) { for (int i = 0; i < values.length; i++) { this.values[i] = values[i]; } } } public Intent execute(Context context) { int[] colors={color.BLUE,color.YELLOW}; DefaultRenderer renderer=buildcategoryRenderer(colors); renderer.setAntialiasing(true);//没有看出有啥效果来 renderer.setApplyBackgroundcolor(true);//设置背景颜色 renderer.setBackgroundcolor(color.transparent); renderer.setShowAxes(true);// renderer.setAxescolor(color.GRAY); renderer.setClickEnabled(true);//设置了之后,不可再拖动 renderer.setZoombuttonsVisible(true);//设置伸缩按钮是否可见 renderer.setZoomEnabled(true); renderer.setExternalZoomEnabled(true);//设置是否可以向伸缩 renderer.setLabelscolor(color.GREEN); renderer.setLabelsTextSize(16);// renderer.setLegendHeight(50);// renderer.setPanEnabled(true); renderer.setStartAngle(180);//好像不好用啊 categorySerIEs serIEs=new categorySerIEs("Fruit Ratio"); serIEs.add("Apple",values[0]); serIEs.add("Banana",values[1]); serIEs.add("Orange",values[2]); return ChartFactory.getPIEChartIntent(context,serIEs,renderer,"水果"); } private DefaultRenderer buildcategoryRenderer(int[] colors) { DefaultRenderer renderer=new DefaultRenderer(); renderer.setApplyBackgroundcolor(true); renderer.setBackgroundcolor(color.GRAY); renderer.setLabelsTextSize(20); renderer.setChartTitle("饼状图"); renderer.setChartTitleTextSize(20); renderer.setLegendTextSize(20); renderer.setLegendHeight(50); for (int i = 0; i < colors.length; i++) { int j = colors[i]; SimpleSerIEsRenderer r=new SimpleSerIEsRenderer(); r.setcolor(j); renderer.addSerIEsRenderer(r); } return renderer; }}
5. MainActivity.java
package com.anjoyo.achartengine;import androID.os.Bundle;import androID.app.Activity;import androID.content.Intent;import androID.vIEw.Menu;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;public class MainActivity extends Activity { private button lineChartBtn; private button areaChartBtn; private button scatterChartBtn; private button timeChartBtn; private button barChartBtn; private button pIEChartBtn; private button bubbleChartBtn; private button doughnutChartBtn; private button rangebarChartBtn; private button dialChartBtn; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { 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); OnClickListener Listener=new AChartEngineListener(); lineChartBtn.setonClickListener(Listener); pIEChartBtn.setonClickListener(Listener); barChartBtn.setonClickListener(Listener); bubbleChartBtn.setonClickListener(Listener); } class AChartEngineListener implements OnClickListener{ @OverrIDe public voID onClick(VIEw v) { // Todo @R_301_6843@-generated method stub switch (v.getID()) { case R.ID.line_chart:// Intent intent=new Intent(MainActivity.this,linearChartActivity.class);// startActivity(intent); Intent linearChartIntent=new AlinearChart().execute(MainActivity.this); startActivity(linearChartIntent); break; case R.ID.area_chart: break; case R.ID.scatter_chart: break; case R.ID.time_chart: break; case R.ID.bar_chart: Intent barChartIntent=new AbarChart().execute(MainActivity.this); startActivity(barChartIntent); break; case R.ID.pIE_chart: Intent pIEChartIntent=new APIeChart().execute(MainActivity.this); startActivity(pIEChartIntent); break; case R.ID.bubble_chart: Intent bubbleChartIntent=new ABubbleChart().execute(MainActivity.this); startActivity(bubbleChartIntent); break; case R.ID.doughnut_chart: break; case R.ID.range_bar_chart: break; case R.ID.dial_chart: break; default: break; } } }}
6. linearChartActivity.java
package com.anjoyo.achartengine;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.GraphicalVIEw;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.VIEwGroup.LayoutParams;import androID.Widget.linearLayout;public class linearChartActivity extends Activity { private XYMultipleSerIEsDataset dataset = new XYMultipleSerIEsDataset(); private XYMultipleSerIEsRenderer renderer = new XYMultipleSerIEsRenderer(); private XYSerIEs currentSerIEs; private XYSerIEsRenderer currentRenderer; private String dateFormat; private GraphicalVIEw chartVIEw; @OverrIDe protected voID onRestoreInstanceState(Bundle savedInstanceState) { // Todo @R_301_6843@-generated method stub 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 protected voID onSaveInstanceState(Bundle outState) { // Todo @R_301_6843@-generated method stub 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 protected voID onCreate(Bundle savedInstanceState) { // Todo @R_301_6843@-generated method stub super.onCreate(savedInstanceState); setContentVIEw(R.layout.stock_chart); String serIEsTitle = "上证指数"; XYSerIEs serIEs = new XYSerIEs(serIEsTitle); dataset.addSerIEs(serIEs); currentSerIEs = serIEs; XYSerIEsRenderer serIEsRenderer = new XYSerIEsRenderer(); serIEsRenderer.setcolor(color.BLUE); serIEsRenderer.setFillBelowline(true);// serIEsRenderer.setFillBelowlinecolor(color.RED);//折线下面区域是否添加颜色 serIEsRenderer.setPointStyle(PointStyle.POINT); serIEsRenderer.setlinewidth(3); renderer.addSerIEsRenderer(serIEsRenderer);// 添加另外一条曲线图// serIEsRenderer = new XYSerIEsRenderer();// 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; double x = 0; double y = 0; int[][] xyValues = getValues();// for (int i = 0; i < 2; i++) {// for (int j = 0; j < xyValues.length; j++) { x=xyValues[j][0]; y=xyValues[j][1]; currentSerIEs.add(x,y); }// } } @OverrIDe protected voID onResume() { // Todo @R_301_6843@-generated method stub if(chartVIEw == null){ linearLayout layout=(linearLayout) findVIEwByID(R.ID.chart); chartVIEw=ChartFactory.getlineChartVIEw(this,dataset,renderer); layout.addVIEw(chartVIEw,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); }else { chartVIEw.setBackgroundResource(R.ID.chart); chartVIEw.repaint(); } super.onResume(); } private int[][] getValues() { // Todo @R_301_6843@-generated method stub int[][] xyValues = new int[20][2]; Random rand=new Random(); for (int i = 0; i < xyValues.length; i++) { xyValues[i][0]=i; xyValues[i][1]=rand.nextInt(100); } return xyValues; }}
7. AndroIDManifest.xml
<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID" package="com.anjoyo.achartengine" androID:versionCode="1" androID:versionname="1.0" > <uses-sdk androID:minSdkVersion="8" androID:targetSdkVersion="17" /> <application androID:allowBackup="true" androID:icon="@drawable/ic_launcher" androID:label="@string/app_name" androID:theme="@style/AppBasetheme" > <activity androID:name="com.anjoyo.achartengine.MainActivity" androID:label="@string/app_name" > <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity androID:name=".linearChartActivity"></activity> <activity androID:name="org.achartengine.GraphicalActivity"></activity> </application></manifest>
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
总结以上是内存溢出为你收集整理的Android开发中使用achartengine绘制各种图表的方法全部内容,希望文章能够帮你解决Android开发中使用achartengine绘制各种图表的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)