Android开发中使用achartengine绘制各种图表的方法

Android开发中使用achartengine绘制各种图表的方法,第1张

概述本文实例讲述了Android开发中使用achartengine绘制各种图表的方法。分享给大家供大家参考,具体如下:

本文实例讲述了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绘制各种图表的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1144074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存