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. [Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)

    先来说一下我们学校的网站: http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html 查询成绩需要登录,然后显示各学科成绩,但是只显示成绩而没有绩点,也就是 ...

  2. 由“Jasperrpeorts 4.1.2升级到5.1.2对flex项目的解析”到AS3 带命名空间的XML的操作

    原文同步至:http://www.waylau.com/from-jasperrpeorts-4-1-2-upgraded-to-5-1-2-parsing-of-flex-projects-to-t ...

  3. [开源]C#二维码生成解析工具,可添加自定义Logo (转)

    二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...

  4. 【iOS开发-76】Private Contacts案例:导航控制器使用、数据传递、第三方类库使用、tableViewCell的加入删除、数据存储等

    (1)效果 (2)源码与第三方类库下载 http://download.csdn.net/detail/wsb200514/8155979 (3)总结 --导航控制器,能够直接用代码的push和pop ...

  5. java,spring,tomcat,跨域设置

    通过工具远程访问rest会出现  已阻止跨源请求:同源策略禁止读取位于 http://XXXXX:1200/gyly/busData 的远程资源.(原因:CORS 请求失败).  修改方法 添加Fil ...

  6. Wix打包系列(四) 自定义UI

    原文:Wix打包系列(四) 自定义UI 除了标准的安装界面,如果我们要在安装时需要提供一些额外的信息时,这时就需要自定义界面来显示和录入这些信息. 4.1  自定义对话框 如上一章中我们测试数据库的连 ...

  7. 32位Linux文件限制大小

    线上程序不断重新启动,查看log发现是进程由于SIGXFSZ信号退出.对过大的文件进行操作的时候会产生此信号,一般仅仅在32位机器上出现,文件限制大小为2G.用lsof查看进程打开的文件,果然有一个文 ...

  8. Ubuntu12.04下使用virtualbox4.3.12 amd64安装XP系统教程

    首先第一步打开已安装好的Virtualbox4.3.12,效果图例如以下: 第二步:点击新建进入新建虚拟电脑界面,填写名称,选择类型和版本号(我这里使用的三XP 64bit): 第三步:选择内存大小, ...

  9. Mongodb数据备份恢复

    Mongodb数据备份恢复 一.MongoDB数据库导入导出操作 1.导出数据库 twangback为备份的文件夹 命令: mongodump -h 127.0.0.1[服务器IP] -d advie ...

  10. java性能缓慢

    虚拟帝国上面有很多营销软件是JAVA开发的!创业公司通常选择开源技术减少项目管理费用. 除了使用Java编程语言,创业公司也可以利用Java开发工具包的好处(JDK),Java运行时环境(JRE)和J ...