在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开发框架实现绘制折线图的更多相关文章

  1. android开源框架之 andbase

    andbase开发框架介绍:andbase是为Android开发人员量身打造的一款开源类库产品,您能够在本站中获取到最新的代码,演示样例以及开发文档. 下载地址:http://download.csd ...

  2. Android 开源框架Universal-Image-Loader学习

    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...

  3. Android 开源框架Universal-Image-Loader完全解析(三)---源代码解读

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/39057201),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

  4. Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

  5. Android进阶笔记13:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)

    1.RoboBinding RoboBinding是一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架.从简单的角度看,他移除了如addXXListen ...

  6. android 开源框架推荐

    同事整理的 android 开源框架,个个都堪称经典.32 个赞! 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JS ...

  7. Android 开源框架Universal-Image-Loader全然解析(二)--- 图片缓存策略具体解释

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

  8. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  9. 六款值得推荐的Android开源框架简介

    技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的“性价比”比较高的Android开源框架,应该是相对实用的. 1.volley 项目地址 https://github.com/smanik ...

随机推荐

  1. LAN8720A网络模块的使用问题

    一.LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程 ...

  2. 处理async void 方法中无法捕捉异常信息

    利用 NuGet库 Nito.AsyncEx 中的 AsyncContext类. 添加NuGet类库,使用AsyncContext AsyncContext.Run(Action action);

  3. ArcGIS 10 影像、栅格数据格式批量转换

    转自原文 ArcGIS 10 影像.栅格数据格式批量转换 在做三维场景的时候,经常会涉及多种不同格式DEM数据或者影像的转换,如ASCII.GRID.IMG.TIFF等等,遇到大数据量时,我们就需要批 ...

  4. windows系统自带工具

    辅助功能向导:单击"開始→执行",在弹出的对话框中输入:accwiz 计算器:单击"開始→执行",在弹出的对话框中输入:calc 字符影射表:单击"開 ...

  5. Redis笔记教程

    一.redis简介 1.1.1.什么是redis? REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. 读 ...

  6. scrapy-爬取斗图

    scrapy-爬取斗图代码   <一> 开局三连杀    1.创建run的文件  

  7. Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日

    public void testGetAllContact() throws Throwable { //获取联系人信息的Uri Uri uri = ContactsContract.Contacts ...

  8. python3 偏最小二乘法实现

    python3的sklearn库中有偏最小二乘法. 可以参见下面的库说明:http://scikit-learn.org/stable/modules/generated/sklearn.cross_ ...

  9. FZU Problem 2156 Climb Stairs DP

    http://acm.fzu.edu.cn/problem.php?pid=2156 题目大意: 爬楼梯,要爬到n这个位置,每次可以走x也可以走y,然后一定要经过A和B两点,求最终到达n的方案数. 思 ...

  10. postman--下载及使用入门

    安装 本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,http ...