图表引擎AChartEngine 二
这几天项目涉及到android图表绘制,网上找的Demo都是大同小异,也就如上篇博文所写的一样是基本函数的实现。可是所有能找到的Demo都和设计图不符。木有办法,Leader发话啦,万不得已的情况下不能改设计图,顾客是上帝嘛。
AChartEngine这个开源框架已经做得非常不错了,可是在我几乎试完所有渲染效果都答不到自己预期的时候。那就只能——改源码咯!再此不得不佩服带我的师傅啊,大牛啊!再次也表达下对师傅的感激!
现目前用的是achartengine 1.1.0,为了满足特定需求,把achartengine源码的某些方法坐了修改,生成了自己的jar包。
1.重新修改了圆点的方法,自带的setfillPoint(false)中间会留有线。
2.隐藏了Y轴值,但是显示出了网格。(腾讯手机管家流量监控的图也是木有显示Y轴但是有背景网格)
3.给视图设置了显示范围。
public XYSeriesRenderer setXYSeriesRender(){//点线的渲染,返回 点线渲染 对象
XYSeriesRenderer pointRender=new XYSeriesRenderer();
pointRender.setPointStyle(PointStyle.CIRCLE);
pointRender.setFillPoints(false);
pointRender.setLineWidth(2f);
pointRender.setColor(Color.rgb(64,100 , 32));
pointRender.setDisplayChartValues(true);
pointRender.setChartValuesTextSize(25);
pointRender.setShowLegendItem(true);
pointRender.setDisplayChartValuesDistance(30);
pointRender.setChartValuesTextAlign(Align.CENTER);
pointRender.setChartValuesSpacing(12f);
return pointRender;
}
public void setXYMultipleSeriesRenderer(XYSeriesRenderer pointRender,int number ){//坐标轴图形整体渲染。传入的参数是 点线渲染 对象
multiRenderer.setChartTitle(chartName);//设置图表标题
multiRenderer.setYLabels(6);
multiRenderer.setXLabels(0);
setXLabels(xLabels);
multiRenderer.setShowGrid(true);//显示网格
multiRenderer.setPointSize(3f);//设置点的大小 !
multiRenderer.setChartTitleTextSize(20);//设置图表标题文字的大小
multiRenderer.setLabelsTextSize(20);//设置标签的文字大小
multiRenderer.setXLabelsAlign(Align.CENTER);//刻度线与刻度标注之间的相对位置关系
multiRenderer.setPanEnabled(true, false);//允许左右拖动,但不允许上下拖动.
multiRenderer.setZoomEnabled(true);//设置允许放大缩小.
multiRenderer.setShowLegend(false);//不显示图例
multiRenderer.setYLabelsPadding(100f);//这样就看不到y坐标的值了
// 这个会限制Y值,因为我只需要X限制位置,下面搞定!
//multiRenderer.setXAxisMin(0d);//不过限制下Y其实也不错~!!
// multiRenderer.setXAxisMax(5d);
multiRenderer.setShowCustomTextGrid(true);//可以显示竖条了!
multiRenderer.setXLabelsColor(Color.rgb(64,100 , 32));
//设置整体渲染中图表区域内背景色
multiRenderer.setApplyBackgroundColor(true);
multiRenderer.setBackgroundColor(Color.WHITE );
multiRenderer.setMarginsColor(Color.WHITE);
switch(number){
case 0:
multiRenderer.setRange(new double[]{0d, 5d, 30d,200d });
break;
ResultActivity.java
public void initGraphicalView(int number) {
String[] xlab = new String[] { "星期一", "星期二", "星期三", "星期四" };
switch (number) {
case 0:
value = new int[] { 70, 80, 70, 65 };
int[] valueh=new int[]{150,130,120,150};
chartDrawing = new ChartDrawing("收入/支出" , "日期", "数值",xlab);
chartDrawing.setXYSeries(value, "线一条线" );
chartDrawing.setXYMultipleSeriesRenderer(chartDrawing.setXYSeriesRender(), number);
chartDrawing .setXYSeries(valueh, "第二条线" );
chartDrawing .setXYMultipleSeriesRenderer(chartDrawing.setXYSeriesRender(), number);
lView = ChartFactory.getLineChartView(context,chartDrawing.multiDate, chartDrawing.multiRenderer);
layout0.addView(lView);
break;
如果想要下面这种效果,就按如下设置,就X轴默认,控制Y轴范围。
switch(number){
case 0:
// multiRenderer.setRange(new double[]{1d, 5d, 30d,200d });
multiRenderer.setYAxisMin(50d); //不限制X,即默认的x样子,限制Y的范围就OK啦
multiRenderer.setYAxisMax(100d);
break;
好啦,等项目忙完咯俺要来好好的学学AChartEngine这个开源框架~~~
记录下学习的点滴,也供以后自己回过头来复习复习~~
最后,时刻提醒自己一句话:学会去源码里找答案!~~加油!!
图表引擎AChartEngine 二的更多相关文章
- 安卓图表引擎AChartEngine(二) - 示例源码概述和分析
首先看一下示例中类之间的关系: 1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list. 2. IDemoChart接口,这个接口定义了三个方法, getName()返回值 ...
- 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图
折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...
- 安卓图表引擎AChartEngine(一) - 简介
AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型: line chart (折线图) area chart (面积图:分区图,对比图) scatter chart ( ...
- 【开源项目10】安卓图表引擎AChartEngine
安卓图表引擎AChartEngine(一) - 简介 http://blog.csdn.net/lk_blog/article/details/7645509 安卓图表引擎AChartEngine(二 ...
- 安卓图表引擎AChartEngine(六) - 框架源码结构图
包结构: org.achartengine: org.achartengine.model: org.achartengine.renderer: org.achartengine.tools: 安卓 ...
- 安卓图表引擎AChartEngine(五) - Dataset和Render参数介绍
下面只讲解一个Renderer和一个DataSet,更多内容参看官方文档 DefaultRenderer: void addSeriesRenderer(int index, SimpleSeries ...
- 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图
前面几篇博客中都是调用ChartFactory.get***Intent()方法,本节讲的内容调用ChartFactory.get***View()方法,这个方法调用的结果可以嵌入到任何一个Activ ...
- Android图表引擎AChartEngine之折线图使用
最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...
- 图表引擎AChartEngine 一
MainActivity.java package com.example.achartengine0; import org.achartengine.ChartFactory; import or ...
随机推荐
- poj2253(最短路小变形)
题目连接:http://poj.org/problem?id=2253 题意:给出一个无向图,求一条1~2的路径使得路径上的最大边权最小. 分析:dij将距离更新改成取最大值即可,即dp[i]表示到达 ...
- 二、第一个ExtJS程序:helloExtJS
开发前的准备 下载并解压ExtJS包后,能够得到下图的文件文件夹结构: 在实际开发过程中并不须要全部的文件和文件夹,所需的包括例如以下文件夹就可以: 若使用eclipse进行开发,仅仅需将上述文件拷贝 ...
- 【LeetCode】Reorder List 解题报告
Given a singly linked list L: L0→L1→-→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→- You must do th ...
- 在Laravel中一步一步创建Packages
首先要看一下Laravel官方文档,这是最新4.2的文档,假设想看中文的话点击此处,基本一样.这个github上的库setup-laravel4-package,也是一步一步介绍怎样创建一个包.并关联 ...
- 风起看云涌,叶落品人生 - Google 搜索
风起看云涌,叶落品人生 - Google 搜索 风起看云涌,叶落品人生
- Learning Cocos2d-x for WP8(2)——深入刨析Hello World
原文:Learning Cocos2d-x for WP8(2)--深入刨析Hello World cocos2d-x框架 在兄弟篇Learning Cocos2d-x for XNA(1)——小窥c ...
- WPF界面设计技巧(4)—自定义列表项样式
原文:WPF界面设计技巧(4)-自定义列表项样式 有前面修改按钮样式的基础,我们可以尝试来定制一个即好看又好用的 ListBox ,今天先来讲“好看”部分. 打开 Microsoft Visual S ...
- 从Rational Rose 到IBM Rational Software Architect和IBM Rational Rhapsody
2014/10/27 RSA升级,重装,不知怎么搞的,不能添加某些图(比如,活动图),重试了几次都不行,在其它电脑上没有问题.后来把其它电脑上的workspace复制过来,问题攻克了,原来是works ...
- 特里-HDOJ-1671
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Oracle基本流程语句
====1.IF语句==========