这几天项目涉及到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 二的更多相关文章

  1. 安卓图表引擎AChartEngine(二) - 示例源码概述和分析

    首先看一下示例中类之间的关系: 1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list. 2. IDemoChart接口,这个接口定义了三个方法, getName()返回值 ...

  2. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...

  3. 安卓图表引擎AChartEngine(一) - 简介

    AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型: line chart (折线图) area chart (面积图:分区图,对比图) scatter chart ( ...

  4. 【开源项目10】安卓图表引擎AChartEngine

    安卓图表引擎AChartEngine(一) - 简介 http://blog.csdn.net/lk_blog/article/details/7645509 安卓图表引擎AChartEngine(二 ...

  5. 安卓图表引擎AChartEngine(六) - 框架源码结构图

    包结构: org.achartengine: org.achartengine.model: org.achartengine.renderer: org.achartengine.tools: 安卓 ...

  6. 安卓图表引擎AChartEngine(五) - Dataset和Render参数介绍

    下面只讲解一个Renderer和一个DataSet,更多内容参看官方文档 DefaultRenderer: void addSeriesRenderer(int index, SimpleSeries ...

  7. 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图

    前面几篇博客中都是调用ChartFactory.get***Intent()方法,本节讲的内容调用ChartFactory.get***View()方法,这个方法调用的结果可以嵌入到任何一个Activ ...

  8. Android图表引擎AChartEngine之折线图使用

    最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...

  9. 图表引擎AChartEngine 一

    MainActivity.java package com.example.achartengine0; import org.achartengine.ChartFactory; import or ...

随机推荐

  1. JMX操作ActiveMQ(1)

    我们知道ActiveMQ broker的管理接口是通过JMX方式提供的. 一个简单的访问方式就是通过jconsole,输入 service:jmx:rmi:///jndi/rmi://localhos ...

  2. ipv6加英文的中括号访问

    加英文的中括号就可以,如[2001:4998:c:e33::1004],我发现这是yahoo首页.但并不是所有IPv6网站都可以通过IPv6地址访问,跟IPv4一样,网站服务器端可以只绑定域名,不接受 ...

  3. 【Nginx】启动过程

    从应用程序的启动过程中main功能开始跟踪. 解析命令行參数并保存到ngx_cycle_t结构体中,在ngx_process_options函数中将保存配置文件路径. 调用ngx_add_inheri ...

  4. codeforces#253 D - Andrey and Problem里的数学知识

    这道题是这种,给主人公一堆事件的成功概率,他仅仅想恰好成功一件. 于是,问题来了,他要选择哪些事件去做,才干使他的想法实现的概率最大. 我的第一个想法是枚举,枚举的话我想到用dfs,但是认为太麻烦. ...

  5. Django写的投票系统4(转)

    原文地址:http://www.cnblogs.com/djangochina/archive/2013/06/04/3114269.html 现在已经可以在后台管理投票了,现在就差怎么在前台显示和如 ...

  6. HTML5 CSS3专题 纯CSS打造相冊效果

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/30993277 今天偶然发现电脑里面还有这种一个样例.感觉效果还不错,不记得啥时候 ...

  7. 关于identifier was truncated to '255' characters

    学习c++过程中,遇到在VC中使用set时DEBUG模式出现的警告 identifier was truncated to '255' characters in the debug informat ...

  8. wamp在win7下64位系统memcache/memcached安装教程

    折腾了1个多小时,终于搞定.操作系统时64位的,php5.3.13 类似于上一篇的xdebug安装教程~~ memcache和memcached的区别  在自己的新程序中打算全面应用memcached ...

  9. mysql 利用触发器(Trigger)让代码更简单

    一,什么触发器 1,个人理解 触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了.你放炮仗,点燃了,一会就炸了. 2,官方定义 触发器 ...

  10. 关于Hbase的cache配置

    关于Hbase的cache配置 在hbase中的hfilecache中,0.96版本号中新添加了bucket cache, bucket cache通过把hbase.offheapcache.perc ...