码迷,mamicode.com
首页 > 其他好文 > 详细

achartengine之饼图模拟动态数据

时间:2014-05-17 15:09:09      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:android   class   c   tar   ext   http   

  在achartengine是通过ChartFactory.getPieChartView(context, dataset, renderer)方法得到一个GraphicalView对象而这个对象就是饼图对象。。。当然也可以通过ChartFactory。getXXXChartView对象得到其它的表图。

   GraphicalView  mChartView = ChartFactory.getPieChartView(context, dataset, mRenderer);

  当你想要得到饼图对象时,就可以从getPieChartView方法里的参数中看出。。。

  context上下文对象,

  dataset 是一个CategorySeries  可以理解为一个数据集   

  mRenderer是一个DefaultRenderer  渲染器  饼图的外观都是由它来设置

 

 

  CategorySeries  数据集  

  这个东东直接new出来然后调用categorySerisry.add(string, datas[i]);

  public double[] datas={412.0,542.0,486.0,900.1};

  string代表的是每一项的名称

  

  DefaultRenderer  可以直接new出来  然后设置Legend左下字体 ,title标题,饼图上的字体大小以及颜色,设置后既要设置每一个项的颜色。。可以理解为在饼图上每一块的颜色。

  public int[] colors={Color.BLACK,Color.GREEN,Color.MAGENTA,Color.RED};

  for(int color :colors)
  {
    SimpleSeriesRenderer s=new SimpleSeriesRenderer();
    s.setColor(color);
     renderer.addSeriesRenderer(s);
  }

这样就完成了DefaultRenderer  对象的创建了

 具体思路就是样了!!!!!!!!!!!!!!!!

 其中具体的方法可以在以下例子中的注释加以了解。。。当然还可以通过其它方法。。。。

首先布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
>

<LinearLayout
android:id="@+id/chartLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="9"
></LinearLayout>
<Button
android:id="@+id/RefreshButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="refresh"
android:layout_weight="1"
></Button>
</LinearLayout>

 

MainActivity类

import org.achartengine.GraphicalView;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

import com.myluocan.chart.pieChar;

public class MainActivity extends Activity {
private GraphicalView graphicalView;
private LinearLayout linearLayout;
private pieChar piechar;
private Button button;
public String []legendStr={
"差",
"不达标",
"达标",
"优秀"
};
public double[] datas={412.0,542.0,486.0,900.1};
public double[] datas1={410.0,100.0,201.5,80.2};

public int[] colors={Color.BLACK,Color.GREEN,Color.MAGENTA,Color.RED};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
linearLayout=(LinearLayout) findViewById(R.id.chartLinearLayout);
piechar=new pieChar(legendStr,colors,datas);
graphicalView = piechar.getChart(this, "");
linearLayout.addView(graphicalView);
}
public void init()
{
button=(Button) findViewById(R.id.RefreshButton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
graphicalView=piechar.refresh(datas1);
}
});
}
}

 

peichar类

 

 

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;

import android.content.Context;
import android.graphics.Color;

public class pieChar {
private String []legendStr;
private double sum;
private double[] datas;
private int[] colors;
private double[] lengends;
private Context context;
CategorySeries dataset;
DefaultRenderer renderer;
GraphicalView graphicalView;
private String[] getLegendStr() {
return legendStr;
}
public void setLegendStr(String[] legendStr) {
this.legendStr = legendStr;
}
public double getSum() {
return sum;
}
public double[] getDatas() {
return datas;
}
public void setDatas(double[] datas) {
this.datas = datas;
}
public int[] getColors() {
return colors;
}
public void setColors(int[] colors) {
this.colors = colors;
}
public double[] getLengends() {
return lengends;
}
public void setLengends(double[] lengends) {
this.lengends = lengends;
}
public pieChar(String[] legendStr,int []colors,double[] datas)
{
this.legendStr=legendStr;
this.colors=colors;
this.datas=datas;
}
public GraphicalView getChart(Context context,String seriesTitle)
{
this.context=context;
dataset=getDataset(seriesTitle,legendStr,datas);
renderer=getRendere(colors);
graphicalView= ChartFactory.getPieChartView(context, dataset, renderer);
return graphicalView;
}
//创建渲染器
protected DefaultRenderer getRendere(int [] colors)
{
DefaultRenderer renderer=new DefaultRenderer();

renderer.setLegendTextSize(30);//设置左下角表注的文字大小
//renderer.setShowLegend(false);//显示左下文字

renderer.setZoomButtonsVisible(true);//设置显示放大缩小按钮
renderer.setZoomEnabled(true);//设置不允许放大缩小.

renderer.setChartTitle("统计结果");//设置图表标题的文字大小
renderer.setChartTitleTextSize(30);//设置图表标题的文字大小

renderer.setLabelsColor(Color.BLUE);//饼图上标记文字的颜色
renderer.setLabelsTextSize(20);//设置饼图上标记文字的大小

//renderer.setStartAngle(45); //把表图旋转 45
renderer.setPanEnabled(true);//设置是否可以平移
renderer.setDisplayValues(true);//是否显示值
renderer.setClickEnabled(true);//设置是否可以被点击

renderer.setShowAxes(true);
renderer.setAxesColor(Color.CYAN);


renderer.setMargins(new int[]{10,30,15,0}) ;
for(int color :colors)
{
SimpleSeriesRenderer s=new SimpleSeriesRenderer();
s.setColor(color);
renderer.addSeriesRenderer(s);
}
return renderer;
}
//初始化数据
public boolean initData()
{
sum=0;
lengends=new double[datas.length];
for(int i=0;i<datas.length;i++)
{
sum+=datas[i];
}
//计算百分比
for(int i=0;i<datas.length;i++)
{
lengends[i]=(double)Math.round(datas[i]*10000/sum)/100;
}
return true;
}
protected CategorySeries getDataset(String title,String[] lengendStr,double []datas)
{
initData();
CategorySeries categorySerisry=new CategorySeries(title);
for(int i=0;i<lengendStr.length;i++)
{
categorySerisry.add(lengendStr[i]+lengends[i]+"%", datas[i]);
}
return categorySerisry;
}
//更新数据
public GraphicalView refresh(double[] datas1)
{
if(dataset!=null)
{
dataset.clear();
setDatas(datas1);
initData();
for(int i=0;i<legendStr.length;i++)
{
dataset.add(legendStr[i]+lengends[i]+"%", datas[i]);
}
graphicalView.repaint();
}
return graphicalView;
}
}

 

 

这个应该很好看懂 原本想分开解说的 但。。。时间好像有点。。。下班

achartengine之饼图模拟动态数据,布布扣,bubuko.com

achartengine之饼图模拟动态数据

标签:android   class   c   tar   ext   http   

原文地址:http://www.cnblogs.com/Toad520/p/3730763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!