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. Linux源文件夹结构呈现

    1.arch文件夹: - 相关的存储在不同平台上的代码,每个平台都采用了不同的文件夹来区分. ******Alpha平台 ******Arm平台 ******Arv32平台 ******X86平台 2 ...

  2. 常用PHP中花括号使用规则详解

    转自http://www.cnblogs.com/jayleke/archive/2011/11/08/2241609.html 1.简单句法规则(用花括号界定变量名,适用于PHP所有版本): $a ...

  3. [WebGL入门]十,矩阵计算和外部库

    注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,假设翻译有误,欢迎大家指 ...

  4. OpenCV-Python教程(5、初级滤波内容)

    本篇文章介绍如何用OpenCV-Python来实现初级滤波功能. 提示: 转载请详细注明原作者及出处,谢谢! 本文介绍使用OpenCV-Python实现基本的滤波处理 本文不介绍滤波处理的详细概念,所 ...

  5. java nio-理解同步、异步,阻塞和非阻塞

    理解同步.异步,阻塞和非阻塞 结论:阻塞.非阻塞与是否同步异步无关.     转自知乎 “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解, ...

  6. Python的控制结构(转)

    首先我的工作第一语言是c/c++(面向对象子集).选择学习python一方面是因为看很多人都说python开发效率高,所以想验证一下:另一方面,Eric S. Raymond在文章:如何成为一名黑客 ...

  7. [置顶] ※数据结构※→☆线性表结构(list)☆============双向链表结构(list double)(三)

    双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点. ~~~~~~~~~~~~ ...

  8. eclipse 安装vrapper vim插件

    http://vrapper.sourceforge.net/update-site/stable 如果安装不上,设置下代理./window/pereference/network* - manul

  9. 泛泰A850 (高通8064+720p)刷4.4专用中文recovery TWRP2.7.1.3版

    欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...

  10. hdu 4771 Stealing Harry Potter&#39;s Precious

    题目:给出一个二维图,以及一个起点,m个中间点,求出从起点出发,到达每一个中间的最小步数. 思路:由于图的大小最大是100*100,所以要使用bfs求出当中每两个点之间的最小距离.然后依据这些步数,建 ...