在看本篇的时候,请确认已经看过了

某android平板项目开发笔记----aChartEngine图表显示(1)

不然,有些地方这里就不再说明…

关于XYMutilpleSeriesDataset 一些注意的地方

我们可以使用的所有Series对象关系如下图

从图中,我们可以看出,XYMutilpleSeriesDataset 只能添加XYSeries,对于,线性图而言,我们需要明确输入x,y值,这样问题不是很大,但是,对于条形图,饼图,对于x轴的属性就有点多余了,对于非线性图而言,我们需要的数据仅仅只需要一个值,对于这种情况,我们就需要使用一个新的对象,CategorySeries ,因为,我们绘制的是二维坐标图,所有我们在添加到XYMutilpleSeriesDataset 时需要把CategorySeries 对象转换为二维坐标,

View or Intent?

在昨天的例子中,我直接构造了一个可以用于直接显示的Intent,这样做虽然,方便,但是,可编辑的地方就不多,例如,我需要在一个屏幕上显示多个图表那就无能为力了.对于这种情况,我们需要构造一个View,方法也很简单,这里先对比一下,两种情况的使用范围

  优点 缺点

Intent方式显示图表

简单方便,对于单单显示图表而言是个不错的选择 无法进行自定义操作

自定义View方式显示图表

可以在一个屏幕显示多个图表,可以自定义显示位置 需要进行一定的配置

说了这么多来一个例子吧:请认真看注释!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
public class BarExActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 1, 构造显示用渲染图
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        // 2,进行显示
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        // 2.1, 创建柱状图数据
        Random r = new Random();
        for (int i = 0; i < 2; i++) {
            // 注意,这里与昨天的XYSeries 有一点不同!!这里使用CategroySeries
            CategorySeries series = new CategorySeries("test" + (i + 1));
            // 填充数据
            for (int k = 0; k < 10; k++) {
                // 直接填入需要显示的数据,即:Y轴的值
                series.add(Math.abs(20 + r.nextInt() % 100));
            }
            // 这里要进行转换
            dataset.addSeries(series.toXYSeries());
        }
        // 3, 对点的绘制进行设置
        XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
        // 3.1设置颜色
        xyRenderer.setColor(Color.BLUE);
 
        // 3.2设置点的样式
        // xyRenderer.setPointStyle(PointStyle.SQUARE);
        // 3.3, 将要绘制的点添加到坐标绘制中
        renderer.addSeriesRenderer(xyRenderer);
        // 3.4,重复 3.1~3.3的步骤绘制第二组系列点
        xyRenderer = new XYSeriesRenderer();
        xyRenderer.setColor(Color.RED);
        // xyRenderer.setPointStyle(PointStyle.CIRCLE);
        renderer.addSeriesRenderer(xyRenderer);
        // 注意这里x,y min 不要相同
        // 这里用一种内置的设置x,y范围的方法
        //顺序是:minX, maxX, minY, maxY
        double[] range = { 0, 10, 1, 200 };
        renderer.setRange(range);
        // 等价于:
        // -------------------
        // renderer.setXAxisMin(0);
        // renderer.setXAxisMax(10);
        // renderer.setYAxisMin(1);
        // renderer.setYAxisMax(200);
        // -------------------
         
 
        // 设置合适的刻度,在轴上显示的数量是 MAX / labels
        renderer.setXLabels(10);
        renderer.setYLabels(10);
 
        // 设置x,y轴显示的排列,默认是 Align.CENTER
        renderer.setXLabelsAlign(Align.CENTER);
        renderer.setYLabelsAlign(Align.RIGHT);
 
        // 设置坐标轴,轴的颜色
        renderer.setAxesColor(Color.RED);
        // 显示网格
        renderer.setShowGrid(true);
        // 设置x,y轴上的刻度的颜色
        renderer.setLabelsColor(Color.BLACK);
 
        // 设置页边空白的颜色
        renderer.setMarginsColor(Color.CYAN);
        // 设置是否显示,坐标轴的轴,默认为 true
        renderer.setShowAxes(true);
 
        // 设置条形图之间的距离
        renderer.setBarSpacing(0.1);
        int length = renderer.getSeriesRendererCount();
 
        for (int i = 0; i < length; i++) {
            SimpleSeriesRenderer ssr = renderer.getSeriesRendererAt(i);
            // 不知道作者的居中是怎么计算的,默认是Align.CENTER,但是对于两个以上的条形显示
            // 就画在了最右边
            ssr.setChartValuesTextAlign(Align.RIGHT);
            ssr.setChartValuesTextSize(12);
            ssr.setDisplayChartValues(true);
        }
        // Intent intent = new LinChart().execute(this);
        // Intent intent = ChartFactory
        // .getBarChartIntent(this, dataset, renderer, Type.DEFAULT);
        // startActivity(intent);
 
        LinearLayout barchart = (LinearLayout) findViewById(R.id.barchart);
        GraphicalView mChartView = ChartFactory.getBarChartView(this, dataset,
                renderer, Type.DEFAULT);
 
        barchart.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT));
 
        // 这里我偷偷的封装了一个 折线图的显示,用作练习吧!把上一章的例子改为用 view
//      LinChart lineChart = new LinChart();
//      LinearLayout linechart = (LinearLayout) findViewById(R.id.linechart);
//      GraphicalView lineView = lineChart.chartView(this);
//      linechart.addView(lineView, new LayoutParams(LayoutParams.FILL_PARENT,
//              LayoutParams.FILL_PARENT));
    }
}

我们还需要在布局文件里面添加:

1
2
3
<LinearLayout android:id="@+id/barchart" android:orientation="horizontal"
        android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" />
    

显示效果:

把昨天的例子也添加进来,显示效果:

今天就这么多吧,接下来的日子,我需要设计数据库,这个aChartEngine 就暂且告一段落了吧…

作者:游戏阿柴 
出处:http://www.cnblogs.com/youxilua 
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。 
微博联系:新浪微博 
用支付宝赞助博主:http://me.alipay.com/youxilua

aChartEngine图表显示(一页显示多张图表)的更多相关文章

  1. 终于有架构师用401页PDF+194张图表把设计模式讲明白了

    十几年来,IT 界也发生了翻天覆地的变化,各种开源框架层出不穷,机器学习大兴其道.但是,在面向对象编程中,设计模式的重要性却不曾改变.与以前一样,在大规模的企业系统开发中,Java和C#仍处于主导地位 ...

  2. word2007 每页显示表头

    word2007 每页显示表头 在Word 2007文档中,如果一张表格需要在多页中跨页显示,则设置标题行重复显示很有必要,因为这样会在每一页都明确显示表格中的每一列所代表的内容.在Word 2007 ...

  3. 关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法

    关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法 题设: 经常使用FusionCharts图表的朋友可能会遇到这个问题.就是在FusionCharts显示的时候有时候 ...

  4. iis浏览网页时提示无法显示 XML 页

    无法显示 XML 页.         使用 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试.          处理资源 'http://localhost/ 时出错.第 1 ...

  5. IIS 浏览aspx页面出现 无法显示 XML 页

    问题: 无法显示 XML 页. 使用 XSL 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试. 名称以无效字符开头.处理资源 'http://192.168.1.254:808 ...

  6. ecshop订单打印页显示商品缩略图和序号

    ecshop订单打印页显示商品缩略图和序号 订单打印页显示商品缩略图,在论坛没找到适合2.7.2相关的文章,特意贴上来给大家研究一下.1.找到 $sql = "SELECT o.*, IF( ...

  7. SharePoint 2013 自定义翻页显示列表项

    项目需求:自定义开发一个能分页显示列表项的小部件,允许左右翻页,能根据用户权限来显示管理链接等. 效果如下: 技术要求:使用sharepoint rest API 来获取列表项,这样性能高,能够快速响 ...

  8. 关于yum与源码安装的LAMP或LNMP网页直接显示空白页的问题?

    学习LAMP.LNMP时,遇到很奇怪的问题就是:搭建完LAMP或LNMP环境后安装PHPweb程序时,Discuz和Wordpress打不开安装向导,直接显示空白页(PHPWind9.0除外),没有任 ...

  9. 怎样在Yii中显示静态页

    在web应用中,我们经产更需要显示静态页,如“关于我们”等,这些文件通常是静态页,通常有如下几种处理方法: 1.把独立的html文件存在Web服务器能直接访问的目录下.这种方案的缺点是很难维护网页布局 ...

  10. MSDN无法显示该页的解决办法

    今天打开msdn,发现 查阅api时候 出现 “无法显示该页的解决办法“ 这个问题.解决方案如下: 在“运行”中输入regsvr32 "C:\Program Files\Common Fil ...

随机推荐

  1. cxGrid 增加序号 (非数据库绑定模式) (测试通过)

    cxGrid 增加序号 (非数据库绑定模式) ----------------------------------- 1. 选在 adoQuery 控件 , 鼠标右键菜单中 选择 Fields Edi ...

  2. 跨浏览器的事件对象-------EventUtil 中的方法及用法

    什么是EventUti----封装好的事件对象 在JavaScript中,DOM0级.DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即 ...

  3. 为什么使用<!DOCTYPE HTML>

    不管是刚接触前端,还是你已经"精通"web前端开发的内容,你应该知道在你写html的时候需要定义文档类型:你知道如果没有它,浏览器在渲染页面的时候会使用怪异模式:你知道各个浏览器在 ...

  4. 表单中Readonly和Disabled的区别(转载)

    Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...

  5. VS2013调试时,IIS Express Worker Process 已停止工作

    之前调试都没有报错的,今天突然报错了,然后网上找了下资料,很快解决了问题 这是我报错的提示 解决办法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身 ...

  6. Delphi 2010 Can't load package C:\Programme\Afalinasoft\Add-in Express 2\d5units\adxwizardd5.bpl.

    "Can't load package C:\Programme\Afalinasoft\Add-in Express 2\d5units\adxwizardd5.bpl. Componen ...

  7. Android笔记:管理所有活动

    以关闭所有活动为例 public class ActivityCollector { public static List<Activity> activities = new Array ...

  8. linux service命令常见使用方法

    service命令,顾名思义,就是用于管理Linux操作系统中服务的命令. 1. 声明:这个命令不是在所有的linux发行版本中都有.主要是在redhat.fedora.mandriva和centos ...

  9. React Native官方DEMO

    官方给我们提供了UIExplorer项目,这里边包含React Native的基本所有组件的使用介绍和方法. 运行官方DEMO步骤如下 安装react native环境 React Native项目源 ...

  10. MVC学习笔记--跟小静学MVC相关语法特性小补习

    http://www.cnblogs.com/janes/archive/2012/10/15/2721101.html http://www.cnblogs.com/h82258652/p/4795 ...