图表引擎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 ...
随机推荐
- 在Windows下搭建React Native Android开发环境
widows版本: win7 64位 专业版 1. 安装jdk.(我用的jdk7) 注意选择x86还是x64版本, 添加到系统PATH环境变量 2. 准备好android sdk 这个不多说,同时推荐 ...
- UNIX高级环境编程1
UNIX高级环境编程1 故宫角楼是很多摄影爱好者常去的地方,夕阳余辉下的故宫角楼平静而安详. 首先,了解一下进程的基本概念,进程在内存中布局和内容. 此外,还需要知道运行时是如何为动态数据结构(如链表 ...
- sqlit使用要点之引入libsqlite3.dylib
怎样引入libsqlite3.dylib? 在.h 或 .cpp文件里包括相应的头文件
- Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析
原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows In ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- 多个UpdatePanel控件相互引发刷新的使用
原文:多个UpdatePanel控件相互引发刷新的使用 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局 ...
- 22个值得收藏的android开源码-UI篇
本文介绍了android开发人员中比較热门的开源码,这些代码绝大多数能够直接应用到项目中. FileBrowserView 一个强大的文件选择控件.界面比較美丽,使用也非常easy. 特点:能够自己定 ...
- .Net C# Windows Service于server无法启动,错误 193:0xc1
1.情况说明:的近期发展windows维修,当地win7系统正常.把server安装会失败. 图中的引导失败的例子.: 解决方法:执行->输入:eventvwr.msc 打开你的事件查看器 ...
- Effective C++:条款38:通过一个复杂的模具has-a要么“基于一些实现”
(一) public继承是"is-a"关联,"has-a"或"依据某物实现出(is-implemented-in-terms-of)"的意思 ...
- php中页面跳转部分方法论述
假设当前页面:http://localhost:80/index.php 1.include echo “include t1.php”; 跳转后,url地址栏http://localhost:80/ ...