【Android开源框架】使用andbase开发框架实现绘制折线图
在Android中,当有绘制折线图的需求时。大多数人使用的AChartEngine,来进行折线图的绘制。AChartEngine图表引擎确实能够实现折线图的功能。除此之外,我们还能够使用andbase开发框架里面的图表模块。实现图标的绘制。前面文章介绍了使用andbase开发框架实现側滑栏效果。今天,我们学习怎样实现折线的绘制。
首先,我们还是看一下效果图
我们模拟的是一家公司12个月中,两项不同业务的销售额变化,能够看到,效果还是很不错的。
以下。我们開始介绍怎样使用andbase实现这个效果。
首先,我们看一下项目结构,很easy的结构
就一个xml。一个activity。再加上andbase框架。
以下,我们先看一下布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > </LinearLayout>
也是很easy。仅仅有一个线性布局文件。
最基本的东西都在Activity中,以下给出代码以及凝视
/**
*
* @ClassName: MainActivity
* @Description: andbase框架实现表格的绘制
* @author: ZhaoKaiQiang
* @time: 2014-7-17下午3:21:11
* @version: V1.0
*/
public class MainActivity extends Activity { private LinearLayout linearLayout;
// 折线说明文字
private String[] titles = new String[] { "业务一", "业务二" };
// 数据
private List<double[]> values;
// 每一个数据点的颜色
private List<int[]> colors;
// 每一个数据点的简要 说明
private List<String[]> explains;
// 折线的线条颜色
private int[] mSeriescolors;
// 渲染器
private XYMultipleSeriesRenderer renderer; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
linearLayout = (LinearLayout) findViewById(R.id.chart);
initValues();
drawChart();
} /**
* 初始化数据
*/
private void initValues() {
values = new ArrayList<double[]>();
colors = new ArrayList<int[]>();
explains = new ArrayList<String[]>(); values.add(new double[] { 500, 450, 700, 710, 420, 430, 400, 390, 290,
400, 340, 500 });
values.add(new double[] { 523, 450, 320, 370, 480, 570, 420, 350, 400,
450, 700, 710 }); colors.add(new int[] { Color.RED, Color.RED, Color.RED, Color.RED,
Color.RED, Color.RED, Color.RED, Color.RED, Color.RED,
Color.RED, Color.RED, Color.RED });
colors.add(new int[] { Color.BLUE, Color.BLUE, Color.BLUE, Color.BLUE,
Color.GREEN, Color.BLUE, Color.BLUE, Color.BLUE, Color.BLUE,
Color.BLUE, Color.BLUE, Color.BLUE }); explains.add(new String[] { "1月业绩", "2月业绩", "3月业绩", "4月业绩", "5月业绩",
"6月业绩", "7月业绩", "8月业绩", "9月业绩", "10月业绩", "11月业绩", "12月业绩" });
explains.add(new String[] { "1月业绩", "2月业绩", "3月业绩", "4月业绩", "5月业绩",
"6月业绩", "7月业绩", "8月业绩", "9月业绩", "10月业绩", "11月业绩", "12月业绩" }); mSeriescolors = new int[] { Color.rgb(153, 204, 0),
Color.rgb(247, 185, 64) };
} /**
* 開始绘折线图
*/
private void drawChart() {
renderer = new XYMultipleSeriesRenderer();
int length = mSeriescolors.length;
for (int i = 0; i < length; i++) {
// 创建SimpleSeriesRenderer单一渲染器
XYSeriesRenderer r = new XYSeriesRenderer();
// 设置渲染器颜色
r.setColor(mSeriescolors[i]);
r.setFillPoints(true);
r.setPointStyle(PointStyle.SQUARE);
r.setLineWidth(1);
r.setChartValuesTextSize(16);
renderer.addSeriesRenderer(r);
}
// 坐标轴标题文字大小
renderer.setAxisTitleTextSize(16);
// 图形标题文字大小
renderer.setChartTitleTextSize(25);
// 轴线上标签文字大小
renderer.setLabelsTextSize(15);
// 说明文字大小
renderer.setLegendTextSize(15);
// 图表标题
renderer.setChartTitle("公司2014年销售业绩折线图");
// X轴标题
renderer.setXTitle("时间/月");
// Y轴标题
renderer.setYTitle("销售额/万元");
// X轴最小坐标点
renderer.setXAxisMin(0);
// X轴最大坐标点
renderer.setXAxisMax(12);
// Y轴最小坐标点
renderer.setYAxisMin(0);
// Y轴最大坐标点
renderer.setYAxisMax(800);
// 坐标轴颜色
renderer.setAxesColor(Color.rgb(51, 181, 229));
renderer.setXLabelsColor(Color.rgb(51, 181, 229));
renderer.setYLabelsColor(0, Color.rgb(51, 181, 229));
// 设置图表上标题与X轴与Y轴的说明文字颜色
renderer.setLabelsColor(Color.GRAY);
// 设置字体加粗
renderer.setTextTypeface("sans_serif", Typeface.BOLD);
// 设置在图表上是否显示值标签
renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
renderer.getSeriesRendererAt(1).setDisplayChartValues(true);
// 显示屏幕可见取区的XY切割数
renderer.setXLabels(12);
renderer.setYLabels(8);
// X刻度标签相对X轴位置
renderer.setXLabelsAlign(Align.CENTER);
// Y刻度标签相对Y轴位置
renderer.setYLabelsAlign(Align.LEFT);
renderer.setPanEnabled(true, true);
renderer.setZoomEnabled(true);
renderer.setZoomButtonsVisible(true);
renderer.setZoomRate(1.1f);
renderer.setBarSpacing(0.5f); // 标尺开启
renderer.setScaleLineEnabled(true);
// 设置标尺提示框高
renderer.setScaleRectHeight(10);
// 设置标尺提示框宽
renderer.setScaleRectWidth(150);
// 设置标尺提示框背景色
renderer.setScaleRectColor(Color.argb(150, 52, 182, 232));
renderer.setScaleLineColor(Color.argb(175, 150, 150, 150));
renderer.setScaleCircleRadius(35);
// 第一行文字的大小
renderer.setExplainTextSize1(20);
// 第二行文字的大小
renderer.setExplainTextSize2(20); // 临界线
double[] limit = new double[] { 15000, 12000, 4000, 9000 };
renderer.setmYLimitsLine(limit);
int[] colorsLimit = new int[] { Color.rgb(100, 255, 255),
Color.rgb(100, 255, 255), Color.rgb(0, 255, 255),
Color.rgb(0, 255, 255) };
renderer.setmYLimitsLineColor(colorsLimit); // 显示表格线
renderer.setShowGrid(true);
// 假设值是0是否要显示
renderer.setDisplayValue0(true);
// 创建渲染器数据填充器
XYMultipleSeriesDataset mXYMultipleSeriesDataset = new XYMultipleSeriesDataset();
for (int i = 0; i < length; i++) {
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int[] c = colors.get(i);
String[] e = explains.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++) {
// 设置每一个点的颜色
series.add(v[k], c[k], e[k]);
}
mXYMultipleSeriesDataset.addSeries(series.toXYSeries());
}
// 背景
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.rgb(222, 222, 200));
renderer.setMarginsColor(Color.rgb(222, 222, 200)); // 线图
View chart = ChartFactory.getLineChartView(this,
mXYMultipleSeriesDataset, renderer);
linearLayout.addView(chart);
} }
凝视非常清楚,就只是多介绍啦。
本来想上传源码的。可是CSDN下载频道又挂掉了...
有须要的留言吧,那时候我在上传吧
【Android开源框架】使用andbase开发框架实现绘制折线图的更多相关文章
- android开源框架之 andbase
andbase开发框架介绍:andbase是为Android开发人员量身打造的一款开源类库产品,您能够在本站中获取到最新的代码,演示样例以及开发文档. 下载地址:http://download.csd ...
- Android 开源框架Universal-Image-Loader学习
Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...
- Android 开源框架Universal-Image-Loader完全解析(三)---源代码解读
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/39057201),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android进阶笔记13:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)
1.RoboBinding RoboBinding是一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架.从简单的角度看,他移除了如addXXListen ...
- android 开源框架推荐
同事整理的 android 开源框架,个个都堪称经典.32 个赞! 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JS ...
- Android 开源框架Universal-Image-Loader全然解析(二)--- 图片缓存策略具体解释
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android开源框架Afinal第一篇——揭开圣女的面纱
Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...
- 六款值得推荐的Android开源框架简介
技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的“性价比”比较高的Android开源框架,应该是相对实用的. 1.volley 项目地址 https://github.com/smanik ...
随机推荐
- traceroute----追踪数据包在网络上的传输过程
traceroute命令 用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节. traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间.一条路径上的每 ...
- 【Codeforces Round #457 (Div. 2) B】Jamie and Binary Sequence
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把n分解成二进制的形式. n=2^a0+2^a1+...+2^a[q-1] 则固定就是长度为q的序列. 要想扩展为长为k的序列. 可 ...
- 学习WWDC的好资源!
学习WWDC的好资源. 大家都知道.要看Apple每年一度的WWDC,仅仅要到它的Developer站点去就能够了.那里有每年的研讨会视频,并且还能够下载每一个视频的SD或HD视频文件,以及相关的演示 ...
- hdu 3294 Girls' research
#include<stdio.h> #include<string.h> #define MAX 200020 char s[MAX],ss[MAX*2],str[2]; in ...
- 63.当当网txt数据按行切割与合并
获取文件有多少行 //获取文件有多少行 int getN(char *path) { FILE *pf = fopen(path, "r"); if (pf==NULL) { ; ...
- div的标准盒模型和怪异盒模型
(1)标准盒模型 标准盒模型宽高不会被padding和margin撑开 (2)怪异盒模型 怪异盒模型宽高会被padding和margin撑开
- js检查元素是否包括在数组中
说明 在系统中须要检查税率填写的正确性,一定是国家规定的某几种税率,当然能够通过if else进行校验,可是还能够使用定义一个数组然后校验是否包括在元素中进行校验. 长处:加入税率无需改动逻辑,仅仅须 ...
- HTML基础第十讲---排版卷标
转自:https://i.cnblogs.com/posts?categoryid=1121494 网页的排版部份也是很重要的一环,有些现成的卷标就可以让您轻易的完成缩排或是一些特殊格式的编排喔! [ ...
- 洛谷P1876 开灯
题目背景 该题的题目是不是感到很眼熟呢? 事实上,如果你懂的方法,该题的代码简直不能再短. 但是如果你不懂得呢?那...(自己去想) 题目描述 首先所有的灯都是关的(注意是关!),编号为1的人走过来, ...
- jquery中$(dom).each()和$(dom).length的使用
1.$(dom).each();在dom处理上用的比较多. $(selector).each(function(index,element){ //selector会遍历当前页面里所有匹配的jquer ...