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. git merge,rebase和*(no branch)

    上一篇:http://blog.csdn.net/xiaoputao0903/article/details/23933589,说了git的分支,相关的使用方法没说到可是仅仅要google就能搜出一大 ...

  2. zoj3471(状压dp)

    题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257 题意:不超过10种气体,两两之间相互碰撞可以产生一定的能量,如 ...

  3. Android入门之简单短信发送器

    效果图: manifest.xml 文件中加入  <uses-permission android:name="android.permission.SEND_SMS"/&g ...

  4. 假设拦截WebView的错误和OS升级到4.4后链接不能点击的问题

    android OS升级到4.4之后,有些WebView的链接我们点击无效了,以下能够解决当中的某一种情况: webviewClient的shouldOverrideUrlLoading方法必须返回f ...

  5. HDU 4815 背包

    标题的含义给出N问题.和概率P,然后给予相应的分数为每个问题x(每个问题只有两种选择,纠正错误). 两个人来回答.一个人是随机选择的答案,问:还有一个人的至少一些点的能力有保证P概率不会失败. 01背 ...

  6. k-d tree算法

    k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...

  7. 【JAVA学习】“-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java执行參数(转)

    年轻代 年老代概念 http://jefferent.iteye.com/blog/1123677 JVM的堆的内存, 是通过以下面两个參数控制的  -Xms 最小堆的大小, 也就是当你的虚拟机启动后 ...

  8. HDU 3315 My Brute(费用流)

    职务地址:HDU 3315 这个题的思路全然是自己想出来的,自我感觉挺巧妙的. . .(大牛勿喷.. . )对大胆建图又多了一份信心. 详细思路是构造一个二分图,Si连源点.Xi连汇点,流量都是1,费 ...

  9. 利用 C++ 单向链表实现队列

    利用C++ 单向链表实现数据结构队列,其实和上一篇基本内容相同,仅仅是插入的时候在链表的尾部插入,取元素都是一样的,都从头部取. #pragma once #include "stdio.h ...

  10. winfrom 倒计时控件

    最近在做一个快递柜项目,要求在用户没有操作的时间到了一分钟,自动返回主页,我于是封装了一个倒计时控件,废话少说,直接上代码 public partial class RemainingTimeUC : ...