欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中使用achartengine生成图表的具体方法

程序员文章站 2023-11-14 08:41:52
今天在做项目的时候用到了图表功能,记录下来 achartengine是google的一个开源项目,可以在 下载技术文档,jar包以及项目源代码 demo下载: 一...

今天在做项目的时候用到了图表功能,记录下来

achartengine是google的一个开源项目,可以在 下载技术文档,jar包以及项目源代码

demo下载:

Android中使用achartengine生成图表的具体方法

一、饼状图

新建工程,添加achartengine  jar包

piechart.java

复制代码 代码如下:

package com.meritit.footlottery.view;

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.graphics.color;
import android.view.view;

public class piechart {
 public view execute(context context) {
  int[] colors = new int[] { color.red, color.yellow, color.blue };
  defaultrenderer renderer = buildcategoryrenderer(colors);
  categoryseries categoryseries = new categoryseries("vehicles chart");
  categoryseries.add("胜 ", 30);
  categoryseries.add("负", 20);
  categoryseries.add("平", 60);
  return chartfactory
    .getpiechartview(context, categoryseries, renderer);
 }

 protected defaultrenderer buildcategoryrenderer(int[] colors) {
  defaultrenderer renderer = new defaultrenderer();
  for (int color : colors) {
   simpleseriesrenderer r = new simpleseriesrenderer();
   r.setcolor(color);
   renderer.addseriesrenderer(r); 
  }
  //显示标签
  renderer.setshowlabels(true);
  //不显示底部说明
  renderer.setshowlegend(false);
  //设置标签字体大小
  renderer.setlabelstextsize(15);
  renderer.setlabelscolor(color.black);
  renderer.setzoomenabled(false);
  renderer.setpanenabled(false);
  return renderer;
 }
}

使用方法

复制代码 代码如下:

//view piechart = new piechart().execute(this);
//chartarea.addview(piechart);

获得一个view对象,在需要添加的布局下面直接addview

二、柱状图

复制代码 代码如下:

package com.meritit.footlottery.view;

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.defaultrenderer;
import org.achartengine.renderer.simpleseriesrenderer;
import org.achartengine.renderer.xymultipleseriesrenderer;

import com.meritit.footlottery.r;

import android.content.context;
import android.graphics.color;
import android.view.view;

public class barchart {
 private context context;
 public view execute(context context) {
  this.context = context;
  return chartfactory
    .getbarchartview(context, getbardemodataset(), getbardemorenderer(), type.default);
 }

    /**
     * xymultipleseriesdataset 类型的对象,用于提供图表需要表示的数据集,
     * 这里我们用 getbardemodataset 来得到它。
     */ 
    private xymultipleseriesdataset getbardemodataset() { 
        xymultipleseriesdataset dataset = new xymultipleseriesdataset(); 
        final int nr = 10; 
        random r = new random(); 
        for (int i = 0; i < 3; i++) { 
            categoryseries series = new categoryseries("球队 " + (i + 1)); 
            for (int k = 0; k < nr; k++) { 
                series.add(100 + r.nextint() % 100); 
            } 
            dataset.addseries(series.toxyseries()); 
        } 
        return dataset; 
    }

    /**
     * xymultipleseriesrenderer 类型的对象,用于提供图表展现时的一些样式,
     * 这里我们用 getbardemorenderer 方法来得到它。
     * getbardemorenderer 方法构建了一个 xymultipleseriesrenderer 用来设置2个系列各自的颜色
     */ 
    public xymultipleseriesrenderer getbardemorenderer() { 
        xymultipleseriesrenderer renderer = new xymultipleseriesrenderer(); 
        simpleseriesrenderer r = new simpleseriesrenderer(); 
        r.setcolor(color.blue); 
        renderer.addseriesrenderer(r); 
        r = new simpleseriesrenderer(); 
        r.setcolor(color.green); 
        renderer.addseriesrenderer(r);
        r = new simpleseriesrenderer(); 
        r.setcolor(color.red); 
        renderer.addseriesrenderer(r);
        renderer.setapplybackgroundcolor(true);
        renderer.setbackgroundcolor(color.transparent);
        renderer.setmarginscolor(context.getresources().getcolor(r.color.main_background_color));
        renderer.setzoomenabled(false, false);
        renderer.setpanenabled(false, false);
        renderer.setlabelstextsize(15);
  renderer.setlabelscolor(color.black);
        setchartsettings(renderer); 
        return renderer; 
    }

    /**
     * setchartsettings 方法设置了下坐标轴样式。
     */ 
    private void setchartsettings(xymultipleseriesrenderer renderer) { 
        renderer.setcharttitle("战绩分析"); 
        renderer.setxtitle("横坐标"); 
        renderer.setytitle("纵坐标"); 
        renderer.setxaxismin(0.5); 
        renderer.setxaxismax(10.5); 
        renderer.setyaxismin(0); 
        renderer.setyaxismax(210); 
    } 
}

上面代码部分解释:
renderer.setapplybackgroundcolor(true);  //设置背景使能,为true下面的设置背景才有效

renderer.setbackgroundcolor(color.transparent);  //设置背景

renderer.setmarginscolor() //设置周围区域颜色

renderer.setzoomenabled(false, false);  //设置是否能放大

renderer.setpanenabled(false, false);  //设置是否可以移动

renderer.setlabelstextsize(15);  //设置标签文字大小
renderer.setlabelscolor(color.black);