文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在Android中使用achartengine绘制图表

2023-05-30 19:50

关注

如何在Android中使用achartengine绘制图表?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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 Auto-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 Auto-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 Auto-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;  }}

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 Auto-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 Auto-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 Auto-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);  }}

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 Auto-generated method stub    int[] linearColor={Color.RED, Color.GREEN, 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 Auto-generated method stub    renderer.setChartTitle("Three Linear Chart");    renderer.setXAxisMax(20);    renderer.setXAxisMin(0);    renderer.setYAxisMax(60);    renderer.setYAxisMin(0);  }  private XYMultipleSeriesDataset getLinearChartDataset() {    // TODO Auto-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;  }}

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 Auto-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.GREEN, 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;  }}

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 Auto-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;      }    }  }}

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 Auto-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 Auto-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 Auto-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 Auto-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 Auto-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;  }}

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>

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯