这几天项目涉及到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. ImageMagick的安装及使用

    近期在使用ImageMagick处理酒店团购图片,写篇博客小小的总结下它的安装及使用方法.ImageMagick是一套功能强大且免费的图片处理开发包,能够用来读,写和处理多种格式的图片文件,总之非常强 ...

  2. 采用 audio 和 embed 实现浏览器的兼容性页音频播放

    采用 audio 和 embed 实现浏览器的兼容性页音频播放 采用 audio 和 embed 实现浏览器的兼容性页音频播放 学习参考源代码如下所示: function playSound() { ...

  3. Struts2第一个工程helloStruts极其基本配置

    前面已经准备好了Struts-2.3.15,现在就可以直接搭建Struts2的工程了.前面http://blog.csdn.net/huangchnegdada/article/details/917 ...

  4. SAE微信公众号PHP SDK, token一直验证失败

    用的是SAE,创建的是微信公众号PHP SDK框架,里面example文件夹下有server.php用来验证token的.但是问题来了,无论我怎么输入URL和token,一直告诉我token验证失败. ...

  5. Android Fragment使用

                     通常地 fragment做为宿主activity UI的一部分, 被作为activity整个view hierarchy的一部分被嵌入. 有2种方法你能够加入一个fr ...

  6. Redis设计与实现读书笔记——双链表

    前言 首先,贴一下参考链接: http://www.redisbook.com/en/latest/internal-datastruct/adlist.html, 另外真赞文章的作者,一个90后的小 ...

  7. SWT的CheckBoxTreeView

    其实CheckBoxTreeView和TreeView基本上是一样的,他们共同的方法有: TreeViewer 类封装了tree控件.树查看器按照父子关系来显示分等级的对象列表.此查看器需要设置标签供 ...

  8. 主要的核心思想是取cookie然后发查询请求,不需要浏览器做代理(转)

    需求是催生项目和推进项目的不竭动力. 背景: 最近,因为媳妇要做个B超检查,想着去大医院查查应该更放心,所以就把目标瞄准在A医院.早已耳闻A院一号难求万人空巷,所以把所有能接触到的机会都看了一遍,线下 ...

  9. Android实现隐藏状态栏和标题栏

    隐藏标题栏需要使用预定义样式:android:theme=”@android:style/Theme.NoTitleBar”. 隐藏状态栏:android:theme=”@android:style/ ...

  10. SOHO路由器的静态路由的不同

    网络拓扑如下,其中RA与RB皆为TP-LINK家用路由器 最终在TP-LINK官网的官网上找到这么一段话 静态路由是在路由器中手工设置的固定的路由条目.我司路由器静态路由是基于ICMP重定向原理,与其 ...