AchartEngine支持多种图表样式,本文介绍两种:线状表和柱状表。 AchartEngine有两种启动的方式:一种是通过ChartFactory.get***View()方式来直接获取到view放入到我们设置好的布局文件中,还有一种是通过ChartFactory.get***Intent()来获得启动activity的intent(需要在AndroidManifest.xml中注册一个activity:org.achartengine.GraphicalActivity)。 需有添加jar包:achartengin.jar,可以到http://code.google.com/p/achartengine/downloads/list这个地址去下载,也可以下地我写的demo的源码,libs文件夹里有。 先上两张效果图: 代码如下: 线状图布局文件: [html] <RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".LineChartBuilder" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <LinearLayout android:id="@+id/chart" android:orientation="horizontal" android:layout_height="fill_parent" android:layout_width="fill_parent" ></LinearLayout> </RelativeLayout> [/html] 主布局文件 [html] <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/lineButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:layout_gravity="center_horizontal" android:text="线状图" /> <Button android:id="@+id/barButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_gravity="center_horizontal" android:text="柱状图" /> </LinearLayout> [/html] 线状图主要代码: [java] public class LineChartBuilder extends Activity { private XYMultipleSeriesDataset mDataset =new XYMultipleSeriesDataset(); private XYMultipleSeriesRenderer mRenderer =new XYMultipleSeriesRenderer(); private XYSeries mCurrentSeries; private XYSeriesRenderer mCurrentRenderer; private String mDataFormatString; private GraphicalView mChartView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.line_chart); //设置图表的属性 String seriesTitle="玩家年龄趋势"; XYSeries series =new XYSeries(seriesTitle); mDataset.addSeries(series); mCurrentSeries=series; XYSeriesRenderer seriesRenderer=new XYSeriesRenderer(); seriesRenderer.setColor(Color.GREEN); seriesRenderer.setFillBelowLine(true); seriesRenderer.setFillBelowLineColor(Color.RED); seriesRenderer.setFillPoints(true); seriesRenderer.setPointStyle(PointStyle.POINT); seriesRenderer.setLineWidth(3.0f); mRenderer.addSeriesRenderer(seriesRenderer); mRenderer.setYAxisMin(0d); mRenderer.setYAxisMax(120d); mRenderer.setXAxisMax(24d); mRenderer.setShowGrid(true); mRenderer.setXLabels(24); mRenderer.setChartTitle("玩家年龄--24小时变化图"); mCurrentRenderer=seriesRenderer; double x=0; double y=0; int [] [] xyValues=getValues(); for (int i = 0; i < xyValues.length; i++) { x=xyValues[i][0]; y=xyValues[i][1]; mCurrentSeries.add(x, y); } } /** * 画图 */ protected void onResume() { super.onResume(); if (mChartView==null) { LinearLayout layout=(LinearLayout) findViewById(R.id.chart); mChartView=ChartFactory.getLineChartView(this, mDataset, mRenderer); layout.addView(mChartView,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); }else { mChartView.setBackgroundResource(R.id.chart); mChartView.repaint(); } } /** * 拆线点的坐标 * @return */ private int[][] getValues(){ int [][] xyValues={{ 0, 88 }, { 1, 79 }, { 2, 75 }, { 3, 71 }, { 4, 90 }, { 5, 88 }, { 6, 66 }, { 7, 65 }, { 8, 50 }, { 9, 78 }, { 10, 67 }, { 11, 77 }, { 12, 79 }, { 13, 85 }, { 14, 89 }, { 15, 93 }, { 16, 95 }, { 17, 99 }, { 18, 66 }, { 19, 55 }, { 20, 44 },{24,30}}; return xyValues; } } [/java] 主界面和柱状图主要代码: [java] public class ChartBuilder extends Activity { private XYMultipleSeriesDataset dataset; private XYMultipleSeriesRenderer renderer; private Button lineButton; private Button barButton; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.chart_builder); lineButton = (Button) findViewById(R.id.lineButton); lineButton.setOnClickListener(onButtonClickListener); barButton = (Button) findViewById(R.id.barButton); barButton.setOnClickListener(onButtonClickListener); } private OnClickListener onButtonClickListener = new OnClickListener() { @Override public void onClick(View v) { if (v.getId() == R.id.lineButton) { startLineChart(); } if (v.getId() == R.id.barButton) { startBarChart(); } } }; private void startLineChart() { Intent intent = new Intent(); intent.setClass(this, LineChartBuilder.class); startActivity(intent); } private void startBarChart() { renderer = this.getBarRenderer(); dataset = this.getBarDataset(this.getMoney()); initNames(); Intent intent = ChartFactory.getBarChartIntent(this, dataset, renderer, org.achartengine.chart.BarChart.Type.DEFAULT); startActivity(intent); } private XYMultipleSeriesRenderer getBarRenderer() { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); SimpleSeriesRenderer simpleRenderer = new SimpleSeriesRenderer(); simpleRenderer.setColor(Color.RED); renderer.addSeriesRenderer(simpleRenderer); this.setCharSettings(renderer); return renderer; } /** * 设置描绘器的属性 * @param renderer */ private void setCharSettings(XYMultipleSeriesRenderer renderer) { renderer.setChartTitle("个人收入表"); renderer.setXTitle("姓名"); renderer.setYTitle("金额"); renderer.setXAxisMin(0.5); renderer.setXAxisMax(10.5); renderer.setBarSpacing(0.5); renderer.setYAxisMin(0); renderer.setYAxisMax(10000); renderer.setYLabelsAlign(Align.RIGHT); renderer.setDisplayChartValues(true); renderer.setShowGrid(true); renderer.setXLabels(0); renderer.setXLabelsAlign(Align.CENTER); renderer.setPanEnabled(true, false); } /** * 适配数据到数据集XYMultipleSeriesDataset * @param moneys * @return */ private XYMultipleSeriesDataset getBarDataset(double[] moneys) { XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); CategorySeries series = new CategorySeries("2013年3月金额"); for (int i = 0; i < moneys.length; i++) { series.add(moneys[i]); } dataset.addSeries(series.toXYSeries()); return dataset; } /** * y轴上的数值 * @return */ private double[] getMoney() { double[] moneys = { 1500, 2000, 4000, 4500, 5000, 6000, 7600, 8000, 9100, 9500 }; return moneys; } /** * x轴下面的label名称 */ private void initNames() { String[] names = { "张三", "李四", "王五", "刘六", "肖七", "周一", "杨二", "袁八", "封九", "潘十" }; for (int i = 0; i < names.length; i++) { renderer.addTextLabel(i+1, names[i]); } } } [/java] 源码下载地址:http://download.csdn.net/detail/homg92/6216873 源码用utf-8编码 获得intent和view的方法介绍:

条形图

static android.content.Intent

getBarChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type)

条形图

static android.content.Intent

getBarChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type, java.lang.String activityTitle)

条形图

static GraphicalView

getBarChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type)

气泡图

static android.content.Intent

getBubbleChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)

气泡图

static android.content.Intent

getBubbleChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String activityTitle)

气泡图

static GraphicalView

getBubbleChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)

组合图

static android.content.Intent

getCombinedXYChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String[] types, java.lang.String activityTitle)

组合图

static GraphicalView

getCombinedXYChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String[] types)

立方折线图

static GraphicalView

getCubeLineChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness)

立方折线图

static android.content.Intent

getCubicLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness)

立方折线图

static android.content.Intent

getCubicLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness, java.lang.String activityTitle)

拨号盘

static android.content.Intent

getDialChartIntent(android.content.Context context,CategorySeries dataset, DialRenderer renderer, java.lang.String activityTitle)

拨号盘

static GraphicalView

getDialChartView(android.content.Context context, CategorySeries dataset,DialRenderer renderer)

圆环图

static android.content.Intent

getDoughnutChartIntent(android.content.Context context,MultipleCategorySeries dataset, DefaultRenderer renderer, java.lang.String activityTitle)

圆环图

static GraphicalView

getDoughnutChartView(android.content.Context context,MultipleCategorySeries dataset, DefaultRenderer renderer)

圆环图

static android.content.Intent

getLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)

折线图

static android.content.Intent

getLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String activityTitle)

折线图

static GraphicalView

getLineChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)

饼图

static android.content.Intent

getPieChartIntent(android.content.Context context, CategorySeries dataset,DefaultRenderer renderer, java.lang.String activityTitle)

饼图

static GraphicalView

getPieChartView(android.content.Context context, CategorySeries dataset,DefaultRenderer renderer)

范围条形图

static android.content.Intent

getRangeBarChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type, java.lang.String activityTitle)

范围条形图

static GraphicalView

getRangeBarChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type)

散点图

static android.content.Intent

getScatterChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)

散点图

static android.content.Intent

getScatterChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String activityTitle)

散点图

static GraphicalView

getScatterChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)

时间图

static android.content.Intent

getTimeChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String format)

时间图

static android.content.Intent

getTimeChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String format, java.lang.String activityTitle)

时间图

static GraphicalView

getTimeChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String format)

描绘器和数据集的属性解析:

DefaultRenderer:

void

addSeriesRenderer(int index, SimpleSeriesRenderer renderer) 增加一个renderer到multiple renderer中,index是指定的位置.

void

addSeriesRenderer(SimpleSeriesRenderer renderer)增加一个renderer到multiple renderer中

int

getAxesColor() 得到X轴的颜色.

int

getBackgroundColor() 得到背景色

java.lang.String

getChartTitle() 得到图表的标题

float

getChartTitleTextSize() 得到图表标题的字号

int

getLabelsColor() 得到Y轴的颜色.

float

getLabelsTextSize() 得到Y轴的字号.

int

getLegendHeight() 得到图例的高度.

float

getLegendTextSize() 得到图例的字号.

int[]

getMargins() 得到图表外边框的大小.

float

getOriginalScale() Returns the original value to be used for scaling the chart.

float

getScale() Returns the value to be used for scaling the chart.

int

getSelectableBuffer() 得到点的缓冲半径值(在某点附件点击时,多大范围内都算点击这个点) Returns the selectable radius value around clickable points.

SimpleSeriesRenderer

getSeriesRendererAt(int index) 在multiple renderer中得到指定位置的 renderer.

int

getSeriesRendererCount() 得到multiple renderer集合中renderer的个数.

SimpleSeriesRenderer[]

getSeriesRenderers() 得到 multiple renderer 中的renderer数组.

float

getStartAngle() 得到圆形图(例如:饼图/圆环图等)的开始角度.

java.lang.String

getTextTypefaceName()

得到字体名.

int

getTextTypefaceStyle()

得到字体类型.

float

getZoomRate()

得到放大缩小的倍率.

boolean

isAntialiasing() Returns the antialiasing flag value.

boolean

isApplyBackgroundColor()

得到是否应用背景色的设置结果(true/false).

boolean

isClickEnabled()

得到是否启用点击事件.

boolean

isExternalZoomEnabled() Returns the enabled state of the external (application implemented) zoom.

boolean

isFitLegend()

得到是否设置图例大小自适应.

boolean

isInScroll() Returns if the chart is inside a scroll view and doesn't need to shrink.

boolean

isPanEnabled() 得到是否允许拖动 Returns the enabled state of the pan.

boolean

isShowAxes()

得到是否显示X轴.

boolean

isShowCustomTextGrid()

得到是否显示X轴和Y轴网格.

boolean

isShowGridX()

得到是否显示X轴网格.

boolean

isShowGridY()

得到是否显示Y轴网格.

boolean

isShowLabels()

得到是否显示刻度.

boolean

isShowLegend()

得到是否显示图例.

boolean

isZoomButtonsVisible()

得到是否显示放到缩小按钮.

boolean

isZoomEnabled()

是否支持放大缩小.

void

removeSeriesRenderer(SimpleSeriesRenderer renderer) 在multiple renderer中移除一个renderer.

void

setAntialiasing(boolean antialiasing) Sets the antialiasing value.

void

setApplyBackgroundColor(boolean apply)

设置是否应用背景色.

void

setAxesColor(int color)

设置X轴的颜色.

void

setBackgroundColor(int color)

设置背景色.

void

setChartTitle(java.lang.String title)

设置图表的标题.

void

setChartTitleTextSize(float textSize)

设置图表标题字号.

void

setClickEnabled(boolean enabled)

设置是否允许单击事件.

void

setExternalZoomEnabled(boolean enabled) Sets the enabled state of the external (application implemented) zoom.

void

setFitLegend(boolean fit)

设置图例字号自适应.

void

setInScroll(boolean inScroll) To be set if the chart is inside a scroll view and doesn't need to shrink when not enough space.

void

setLabelsColor(int color)

设置坐标颜色.

void

setLabelsTextSize(float textSize) 设置坐标字号.

void

setLegendHeight(int height) 设置图例高度(单位: pixels).

void

setLegendTextSize(float textSize)

设置图例字号.

void

setMargins(int[] margins)

设置外边框(单位:pixels)上/左/下/右.

void

setPanEnabled(boolean enabled) 设置是否允许拖动 Sets the enabled state of the pan.

void

setScale(float scale) Sets the value to be used for scaling the chart.

void

setSelectableBuffer(int buffer) 设置点的缓冲半径值(在某点附件点击时,多大范围内都算点击这个点) Sets the selectable radius value around clickable points.

void

setShowAxes(boolean showAxes)

设置是否显示X轴.

void

setShowCustomTextGrid(boolean showGrid) 设置X轴和Y轴网格是否显示.

void

setShowGrid(boolean showGrid)

设置是否显示网格.

void

setShowGridX(boolean showGrid)

设置是否显示X轴网格.

void

setShowGridY(boolean showGrid)

设置是否显示Y轴网格.

void

setShowLabels(boolean showLabels)

设置是否显示坐标.

void

setShowLegend(boolean showLegend)

设置是否显示图例.

void

setStartAngle(float startAngle) 设置圆形图(例如:饼图/圆环图等)的开始角度.

void

setTextTypeface(java.lang.String typefaceName, int style)

设置字体名和类型.

void

setZoomButtonsVisible(boolean visible)

设置是否显示放大缩小按钮.

void

setZoomEnabled(boolean enabled)

设置是否允许放大和缩小.

void

setZoomRate(float rate) 设置放大缩小的倍率.

XYMultipleSeriesDataset

void

addSeries(int index, XYSeries series) 在指定位置增加一个序列.

void

addSeries(XYSeries series) 增加一个序列.

XYSeries[]

getSeries() 得到序列的数组

XYSeries

getSeriesAt(int index) 得到指定位置的序列.

int

getSeriesCount() 得到序列的个数.

void

removeSeries(int index) 移除指定位置的序列.

void

removeSeries(XYSeries series) 移除一个序列

android报表图形引擎(AChartEngine)demo解析与源码的更多相关文章

  1. Android 图片加载框架Glide4.0源码完全解析(二)

    写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...

  2. Android 全面插件化 RePlugin 流程与源码解析

    转自 Android 全面插件化 RePlugin 流程与源码解析 RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普 ...

  3. android 在线升级借助开源中国App源码

    android 在线升级借助开源中国App源码 http://www.cnblogs.com/luomingui/p/3949429.html android 在线升级借助开源中国App源码分析如下: ...

  4. 解析 ViewTreeObserver 源码(下)

    继上篇内容,本文介绍 ViewTreeObserver 的使用,以及体会其所涉及的观察者模式,期间会附带回顾一些基础知识.最后,我们简单聊一下 Android 的消息传递,附高清示意图,轻松捋清整个传 ...

  5. Android精品资源汇总,10个源码(持续更新)

    最近一直在学习Android,在各大社区逛,总结下自己看到的一些不错的源码.希望可以给大家带来帮助. 1.Android精品源码:带动态效果的Button(按钮) 最喜欢各种效果的按钮了,没办法就是这 ...

  6. 二十三、并发编程之深入解析Condition源码

    二十三.并发编程之深入解析Condition源码   一.Condition简介 1.Object的wait和notify/notifyAll方法与Condition区别 任何一个java对象都继承于 ...

  7. Android斗地主棋牌游戏牌桌实现源码下载

    本次给大家分享下Android斗地主棋牌游戏牌桌实现源码下载如下: 为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法. 1.主Activity package com.biso ...

  8. Android Studio2.x版本无法自动关联源码的解决方法

    Android Studio2.x版本无法自动关联源码的解决方法 在学习android开发过程中,对于一个不熟悉的类,阅读源码是一个很好的学习方式,使用andorid studio开发工具的SDK M ...

  9. android版高仿淘宝客户端源码V2.3

    android版高仿淘宝客户端源码V2.3,这个版本我已经更新到2.3了,源码也上传到源码天堂那里了,大家可以看一下吧,该应用实现了我们常用的购物功能了,也就是在手机上进行网购的流程的,如查看产品(浏 ...

随机推荐

  1. PS基础

    1.仿制图章工具:[小  ]大   建立一个新的图层,可以进行图片某个部分的复制,完全复制之后,还可以调整大小(ctrl+t), 颜色(ctrl+u打开色相饱和度的菜单)等. 2.修复画笔工具:与仿制 ...

  2. 基于ARM的RealView MDK开发环境

    RealView MDK可以对各种嵌入式处理器的软件开发工具.这么高端,着实很吸引我,ADS12还不知道怎么搞,居然还有这么高端的,但是还是得了解一下唉.洗这个自动配 置启动代码,集成Flash烧写模 ...

  3. Chomp!游戏 (组合游戏Combinatorial Games)

    http://blog.csdn.net/acdreamers/article/details/17021095 有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格.拿到左下角的格子 ...

  4. 总结html5-canvas学习笔记

    canvas是html5中很重要的一部分,我们可以用它来绘制各种平面图形, 3d图,动画等等.每每看到网上超炫的html5页面,首先立马下载下来,心里想着有一天自己也可以做出这样酷炫的效果,骚年你是不 ...

  5. scala学习笔记:理解函数

    定义一个函数: scala> def foo(x:Int)=x*2 foo: (x: Int)Int 可以采用匿名参数: scala> def foo:((Int)=>Int) = ...

  6. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  7. ASP防止盗链的一段代码

    <%@Language="vbscript"%> <% Response.Buffer = true Response.Expires = -1441 ' var ...

  8. Asp.net网页中禁止使用剪切、复制、粘贴的方法

    工欲善其事,必先利其器 在asp.net开发的网页中,有时候需要禁止用户粘贴复制密码,禁止用户copy文章直接粘贴到文本框中.采取的方法是直接在限制控件的地方写上禁止粘贴文本的代码.但是这样不是很方便 ...

  9. HDU 1069 Monkey and Banana(动态规划)

    Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...

  10. C语言变参函数/Variadic fucntion

    几个重要的 宏/类型 定义 Macros Defined in header <stdarg.h> va_start enables access to variadic function ...