MainActivity.java

package com.example.achartengine0;

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart.Type; import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.LinearLayout; public class MainActivity extends Activity {
private Context context;
private LinearLayout layout0, layout1, layout2, layout3;
private String chartName0, chartName1;
private GraphicalView lView, bView;
private int number; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
layout0 = (LinearLayout) findViewById(R.id.container0);
layout1 = (LinearLayout) findViewById(R.id.container1);
layout2 = (LinearLayout) findViewById(R.id.container2);
layout3 = (LinearLayout) findViewById(R.id.container3);
for (number = 0; number <= 2; number++)
initGraphicalView(number); } public void initGraphicalView(int number) {
String[] xlab = new String[] { "一月", "二月", "", "三月", "四月", "五月" };
int[] value = new int[] { 20, 30, 40, 30, 10, 20 };
ChartDrawing chartDrawing = new ChartDrawing("图" + number, "日期", "数值",
xlab);
chartDrawing.setXYSeries(value, "线" + number);
chartDrawing.setXYMultipleSeriesRenderer(
chartDrawing.setXYSeriesRender(), number);
switch (number) {
case 0:
lView = ChartFactory.getLineChartView(context,
chartDrawing.multiDate, chartDrawing.multiRenderer);
layout0.addView(lView);
break;
case 1:
lView = ChartFactory.getLineChartView(context,
chartDrawing.multiDate, chartDrawing.multiRenderer);
layout1.addView(lView);
break;
case 2:
lView = ChartFactory.getBarChartView(context,
chartDrawing.multiDate, chartDrawing.multiRenderer,
Type.DEFAULT);
layout2.addView(lView);
break;
} } }

AChartDrawing.java

package com.example.achartengine0;

import org.achartengine.chart.PointStyle;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer; import android.graphics.Color;
import android.graphics.Paint.Align;
import android.graphics.Paint.Style; public class ChartDrawing {
private String chartName;
private String xTitle;
private String yTitle;
private String[] xLabels;
public XYMultipleSeriesDataset multiDate ;//需要在构造函数中初始化,不然main函数调用时是Null
public XYMultipleSeriesRenderer multiRenderer ;
public CategorySeries date; public ChartDrawing(String chartName,String xTitle, String yTitle, String[] xLabels ) {
super();
this.chartName=chartName;
this.xTitle = xTitle;
this.yTitle = yTitle;
this.xLabels = xLabels;
multiDate=new XYMultipleSeriesDataset();
multiRenderer=new XYMultipleSeriesRenderer();
date=new CategorySeries(yTitle);
} public void setXYSeries(int[] value,String lName){//设置点的值
XYSeries xySeries=new XYSeries(lName);//某条线的点线对象
for(int i=0;i<value.length;i++){
xySeries.add(i+1, value[i]);
}
multiDate.addSeries(xySeries);//把所有点添加到数据集
}
public XYSeriesRenderer setXYSeriesRender(){//点线的渲染,返回 点线渲染 对象
XYSeriesRenderer pointRender=new XYSeriesRenderer();
pointRender.setPointStyle(PointStyle.CIRCLE);
pointRender.setFillPoints(false);
pointRender.setLineWidth(2f);
pointRender.setColor(Color.RED);
pointRender.setDisplayChartValues(true); return pointRender;
}
public void setXYMultipleSeriesRenderer(XYSeriesRenderer pointRender,int number ){//坐标轴图形整体渲染。传入的参数是 点线渲染 对象
multiRenderer.setChartTitle(chartName);//设置图表标题
multiRenderer.setShowGrid(true);//显示网格
multiRenderer.setPointSize(3f);//设置点的大小 !
multiRenderer.setChartTitleTextSize(20);//设置图表标题文字的大小
multiRenderer.setLabelsTextSize(15);//设置标签的文字大小
multiRenderer.setXLabelsAlign(Align.CENTER);//刻度线与刻度标注之间的相对位置关系
multiRenderer.setPanEnabled(true, false);//允许左右拖动,但不允许上下拖动.
multiRenderer.setZoomEnabled(false);//设置允许放大缩小.
multiRenderer.setXTitle(xTitle);
multiRenderer.setYTitle(yTitle);
multiRenderer.setMarginsColor(Color.WHITE);//设置空白区(图表区域外)背景色, 默认是黑色 /**设置整体渲染中图表区域内背景色
* multiRenderer.setApplyBackgroundColor(true);
multiRenderer.setBackgroundColor(Color.argb(0, 220, 228, 234) );
multiRenderer.setMarginsColor(Color.argb(0, 220, 228, 234));
*/ switch(number){
case 0://最基本情形 折线图,设置Y轴坐标数10
multiRenderer.setYLabels(10);
multiRenderer.setZoomButtonsVisible(true);//显示放大缩小的功能栏
break;
case 1://自定义X轴坐标 折线图,不设置Y坐标数,隐藏Y轴! 遗留问题:自定义某个轴后,某个轴对应的网格背景就木有了。。
multiRenderer.setXLabels(0);//这样才能显示我们自定义的x轴
multiRenderer.setYLabels(0);
multiRenderer.setYTitle("");
setXLabels(xLabels);
break;
case 2://柱形图
multiRenderer.setBarSpacing(1.5);
break; } multiRenderer.addSeriesRenderer(pointRender);
}
public void setXLabels(String[] xl){
for(int i=0;i<xl.length;i++)
multiRenderer.addXTextLabel(i+1, xl[i]);
} }

图表引擎AChartEngine 一的更多相关文章

  1. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...

  2. 安卓图表引擎AChartEngine(一) - 简介

    AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型: line chart (折线图) area chart (面积图:分区图,对比图) scatter chart ( ...

  3. 【开源项目10】安卓图表引擎AChartEngine

    安卓图表引擎AChartEngine(一) - 简介 http://blog.csdn.net/lk_blog/article/details/7645509 安卓图表引擎AChartEngine(二 ...

  4. 安卓图表引擎AChartEngine(六) - 框架源码结构图

    包结构: org.achartengine: org.achartengine.model: org.achartengine.renderer: org.achartengine.tools: 安卓 ...

  5. 安卓图表引擎AChartEngine(五) - Dataset和Render参数介绍

    下面只讲解一个Renderer和一个DataSet,更多内容参看官方文档 DefaultRenderer: void addSeriesRenderer(int index, SimpleSeries ...

  6. 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图

    前面几篇博客中都是调用ChartFactory.get***Intent()方法,本节讲的内容调用ChartFactory.get***View()方法,这个方法调用的结果可以嵌入到任何一个Activ ...

  7. 安卓图表引擎AChartEngine(二) - 示例源码概述和分析

    首先看一下示例中类之间的关系: 1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list. 2. IDemoChart接口,这个接口定义了三个方法, getName()返回值 ...

  8. Android图表引擎AChartEngine之折线图使用

    最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...

  9. 图表引擎AChartEngine 二

    这几天项目涉及到android图表绘制,网上找的Demo都是大同小异,也就如上篇博文所写的一样是基本函数的实现.可是所有能找到的Demo都和设计图不符.木有办法,Leader发话啦,万不得已的情况下不 ...

随机推荐

  1. 使用SVN clang: error: linker command failed with exit code 1 (use -v to see invocation)

    然后上传到该项目SVN仓库上,例如,下面的错误再次发生再拉到本地编译 ld: library not found for -lxxxxxxxxxxxx clang: error: linker com ...

  2. sql优化-提防错误关联

    在写sql时,在多表关联时,有时候容易把关联关系写错.一般情况下,该问题比较容易发现,但如果sql较长时,光靠眼力就比较难发现了.今天写了一个脚本,碰到该问题了. 第一版本的脚本如下: select ...

  3. C#操作Cookie

    /* 创建者:菜刀居士的博客  * 创建日期: 2014年09月02号  * 功能:操作Cookie  *  */ namespace Net.String.ConsoleApplication { ...

  4. linux中怎样设置DHCP

    linux怎样设置DHCP 环境:RH linux 9.0 使用linux下经常使用的dhcpd包. 最新版本号 dhcp3.0.5 下载地址: 下载 1.安装: 先拷贝dhcp-3.0.5.tar. ...

  5. Android学习十九:ContentProvider初步

    一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...

  6. 远程centos改动yum源

    yum -y install unzip发现运行不了,说是找不到unzip的包,搜索发现时由于yum源的问题,那我就改动yum吧, 在网上找到的方法是这么说的: 1. cd /etc/yum.repo ...

  7. java 解析 json 遍历未知key

    1.—————————————————————————————————————————————————————————————— import net.sf.json.JSONObject; Stri ...

  8. CSS选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org ...

  9. java反射中Method类invoke方法的使用方法

    package com.zsw.test; import java.lang.reflect.Method;import java.lang.reflect.InvocationTargetExcep ...

  10. hdu1532 (最大流入门,EK算法)

    看着这个博客 然后敲了hdu1532这个入门题,算是对最大流有点理解了 #include <stdio.h> #include <string.h> #include < ...