AChartEngine应用之BarChart(动态柱形图)

AChartEngine应用之BarChart(动态柱形图)

构建动态柱形图,官方的API并没有提供可以借鉴的动态柱形图的方法,考虑到数据都是活动的,不可能总是用静态数据,具体是通过定时器+Handler实现定时任务,通过Handler更新主线程UI,在更新之前要把之前的数据清除掉,否则那些数据都会被加载,最后重新绘制动态柱形图,构建动态柱形图的步骤主要分为以下四步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加<activityandroid:name="org.achartengine.GraphicalActivity"
/>。

1.设置XYMultipleSeriesRenderer

private void mRendererSetting() {

mRenderer = new XYMultipleSeriesRenderer();

mRenderer.setAxisTitleTextSize(16);

mRenderer.setChartTitleTextSize(20);

mRenderer.setLabelsTextSize(15);

mRenderer.setLegendTextSize(15);

mSeriesRenderer = new SimpleSeriesRenderer();

mSeriesRenderer.setColor(PieChartBuilder.getRandomColor());

mRenderer.addSeriesRenderer(mSeriesRenderer);

setChartSettings(mRenderer, "柱形图示例", "月份", "数量", 0.5, 12.5, 0, 2400,

Color.GRAY, Color.LTGRAY);// 设置柱形图标题,横轴(X轴)、纵轴(Y轴)、最小的伸所刻度、最大的伸所刻度

//        mRenderer.getSeriesRendererAt(0).setDisplayChartValues(true);// 在第0条柱形图上显示数据

mRenderer.setDisplayChartValues(true);

mRenderer.setXLabels(12);

mRenderer.setYLabels(10);

mRenderer.setXLabelsAlign(Align.LEFT);// 数据从左到右显示

mRenderer.setYLabelsAlign(Align.LEFT);

mRenderer.setPanEnabled(true, false);

mRenderer.setZoomEnabled(true);

mRenderer.setZoomButtonsVisible(true);// 显示放大缩小功能按钮

mRenderer.setZoomRate(1.1f);

mRenderer.setBarSpacing(0.5f);// 柱形图间隔

}

2.构建数据源CategorySeries

/**

* 更新数据,柱形图颜色

*/

private void updateChart() {

Log.i("qiuzhping", " updateChart ok ");

mDataset.clear();

mCategorySeries.clear();

mRenderer.removeSeriesRenderer(mSeriesRenderer);

mSeriesRenderer = new SimpleSeriesRenderer();

mSeriesRenderer.setColor(PieChartBuilder.getRandomColor());

mRenderer.addSeriesRenderer(mSeriesRenderer);

Random random = new Random();

int R = random.nextInt(255);

double[] v = new double[] { R+1423, R+1230, R+1424, R+1524, R+1590, R+1920, R+2203,

R+2120, R+1950, R+1550, R+1260, R+1400 };

int seriesLength = v.length;

for (int k = 0; k < seriesLength; k++) {

mCategorySeries.add(v[k]);

}

mRenderer.setDisplayChartValues(true);

mDataset.addSeries(mCategorySeries.toXYSeries());

mChartView.repaint();

}

3.通过ChartFactory获取饼图

mChartView = ChartFactory.getBarChartView(context, mDataset, mRenderer,

Type.DEFAULT);

mRenderer.setClickEnabled(true);

mLinear.addView(mChartView, new LayoutParams(

LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

4.构建定时器任务


mHandler = new Handler() {// 这里的Handler实例将配合下面的Timer实例,完成定时更新图表的功能

@Override

public void handleMessage(Message msg) {

if (msg.what == 1) {

updateChart();// 刷新图表具体方法 Handler将此并入主线程

}

super.handleMessage(msg);

}

};

TimerTask task = new TimerTask() {

@Override

public void run() {// 通过消息更新

Log.i("qiuzhping", " task ok ");

Message message = new Message();

message.what = 1;// 消息定义标志

mHandler.sendMessage(message);

}

};

timer.schedule(task, 500, 1000 * 10);// 执行任务

效果图:

对应demo:安卓实现AChartEngine+动态饼图+柱形图http://download.csdn.net/detail/qiu_11/8136467

时间: 2024-10-11 02:14:13

AChartEngine应用之BarChart(动态柱形图)的相关文章

achartengine之饼图模拟动态数据

在achartengine是通过ChartFactory.getPieChartView(context, dataset, renderer)方法得到一个GraphicalView对象而这个对象就是饼图对象...当然也可以通过ChartFactory.getXXXChartView对象得到其它的表图. GraphicalView  mChartView = ChartFactory.getPieChartView(context, dataset, mRenderer); 当你想要得到饼图对象

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

JNI与底层调用2

1. 掌握如何使用广播接收者拦截电话和短信 在日常生活中,当手机丢失后,我们可以启动一系列的措施来获取丢失手机的位置信息,或者清楚丢失手机的数据来防止隐私数据泄露,本章就针对这些防盗保护措施进行讲解. 2. JNI 开发中常见错误 2.1 动态库名称写错,或者不存在 static{ System.loadLibrary("hell0"); } 当我们在写上面代码的时候如果不小心将hello 写成了hell0.或者libhello.so 动态库不存在,那么系 统启动时会报如下异常. 2.

MeiTuanRefreshListView高仿美团下拉刷新《IT蓝豹》

MeiTuanRefreshListView高仿美团下拉刷新 MeiTuanRefreshListView高仿美团下拉刷新,本项目来自:https://github.com/nugongshou110/MeiTuanRefreshListView项目主要构成部分:自定义MeiTuanRefreshFirstStepView,MeiTuanRefreshSecondStepView,MeiTuanRefreshThirdStepView,其中自定义MeiTuanListView继承了ListVie

安卓开发中非常炫的效果集合

文章转自:一点点征服的 http://www.cnblogs.com/ldq2016/p/5217590.html 安卓开发中非常炫的效果集合 这几天开发的时候,想做一些好看而且酷炫的特效,于是又开始从网上收集各种特效资源.下面给大家一些我喜欢的把,附代码,喜欢的看源代码,然后加到自己项目去把!! 一个开源项目网站有很多炫酷效果http://itlanbao.com/codes.aspx#1,0 所有效果Dome下载地址:https://github.com/20994842/A-collect

achartengine画出动态折线图

achartengine画出动态折线图的效果最近有个项目需要用到实时曲线图,我也上网搜索了一下,最后还是选择使用achartengine这个现成的东西,毕竟自己再canvas一下实在是太麻烦,而且项目时间上也不允许,虽然这个画图引擎比较简单,不过勉强够用了. 下一步问题就来了,我仓促上手,只会画静态图,就是事先定义好几个坐标,然后activity载入的时候折线就已经画好了,可是我的项目要求我每隔一秒种都要把新搜集到的数据添加到图表中去,类似于windows中那个任务管理器里的性能统计图,网上搜来

AChartEngine 安卓折线图 柱形图等利器

http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多demo,基本上都是写死的数据,下面先让我们看看AChartEngine的介绍 AChartEngine 运行示例图 : 每个图表都需要一个数据集 (Dataset) 和 渲染器集合 (Renderer); -- 数据集 : 又由许多数据组成, -- 渲染器 : 也由不同的子渲染器组成, -- 获取Ac

使用AChartEngine画动态曲线图

AChartEngine是一个开源的Android图表库,可以用来画折线图.平滑折线图.饼图.直方图等等.使用简单,功能强大. AChartEngine官网:http://www.achartengine.org/ AChartEngine库文件:http://repository-achartengine.forge.cloudbees.com/snapshot/org/achartengine/achartengine/1.2.0/ 库文件直接导入就可以使用了. 网上介绍AChartEngi

achartengine 实现平行线 动态数据 x轴动态移动

achartengine做平行线的时候经常会遇到: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) at org.achartengine.renderer.DefaultRenderer.getSeriesRendererAt(DefaultRenderer.java: