MPAndroidChart -- LimitLine的坑
好久没有写博客了,最近比较忙,项目中使用了MPAndroidChart,初次使用也比较蠢,很多API都得一个一个查,但有些时候当你想应该有这个API的时候他却没有,就比如今天的主角LimitLine 限制线,也叫基线。

这条绿色的线就是限制线。
基本使用方法就是:
LimitLine hightLimit = new LimitLine(high, name);
hightLimit.setLineWidth(2f); //设置线宽
hightLimit.setTextSize(10f); //设置限制线上label字体大小
hightLimit.setLineColor(color); //设置线的颜色
hightLimit.setTextColor(color); //设置限制线上label字体的颜色
hightLimit.setLabelPosition(labelPosition);//标签位置
if(isDashedLine){
hightLimit.enableDashedLine(5f,3f,0); //设置虚线
}else{
hightLimit.disableDashedLine();
}
leftAxis.setDrawLimitLinesBehindData(true); //这个很神奇开始看源码注释我有点懵逼,啥意思?看下文解释吧
leftAxis.removeAllLimitLines(); //先清除原来的线,后面再加上,防止add方法重复绘制
leftAxis.addLimitLine(hightLimit);
mBarChart.invalidate();
这个LimitLine 他是根据你 坐标轴来的。
很多人可能会问了 这是什么意思?
来我们根据上面的一步步分析
一.坑一 —— 限制线的添加
限制线的添加有以下三种
1.xAxis (横坐标)
2.leftAxis(左侧纵坐标)
3.rightAxis(右侧纵坐标)
我们上面的代码中就是用的第2种,不管是哪种添加的方式都是一样的,这里我们以上方代码为例说明
leftAxis.addLimitLine(hightLimit); //添加
没错就是这么简单就添加了。
问题:这当然是有坑的,这个坑就是我们的图表有时候并不是不会刷新的,如果你长时间在这个页面刷新数据,那么你就会重复添加限制线,那么你就会看到你的线不停的重叠。
解决方案:每次刷新前先移除上一个存在的限制线
比如这样
leftAxis.removeLimitLine(LimitLine l)
如果你想偷懒还可以这样,清楚所有添加的线
leftAxis.removeAllLimitLines(); //先清除原来的线,后面再加上,防止add方法重复绘制
二.坑二 —— 限制线值太大的看不到
对我们的目标太高了,哈哈,说笑而已,平常是不会有这么高的目标线的,但有些时候工厂的目标就是高啊,没办法,别人要看到差距啊,作为开发人员能说不不不吗?显然不能。那么开始看看吧
我们按照上面的代码添加限制线,当然限制线的值设为500然后惊奇的发现 我们的目标线不宜而飞了....

哈哈,新手懵逼中,老手开始查找API中....真的可惜没有关于限制API的方式给你,老手估计也开始另觅他发准备改动源码了,但改源码这个东西怎么说呢,生怕动一处坏全身。那么我们的问题就来了。
问题:限制线值太大的看不到,希望查看到限制线并体现出柱状和目标的差距
解决方案:这个方法就是围魏救赵,既然我们限制线没有给你API那么我们就想想坐标能显示出500那么限制线就应该能出来了吧,我们来看看有没有设置坐标的API,很开心我们找到了 left.setAxisMaximum(500)
if(sStandard > maxNum) {
//标准线过大的话 会图上看不到标准线,那么我就做个假的数据目标线显示出来,但让显示的数值是真实的值
mBinding.barChart.getAxisLeft().setAxisMaximum(sStandard + 10);
}

欧克出来了
MPAndroidChart -- LimitLine的坑的更多相关文章
- Android图表库MPAndroidChart(二)——线形图的方方面面,看完你会回来感谢我的
Android图表库MPAndroidChart(二)--线形图的方方面面,看完你会回来感谢我的 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...
- MPAndroidChart的具体属性方法
android中常用的第三方图表MPAndroidChart的一些具体属性及方法说明 注意:在将折线图转为曲线图时,lineDataSet.setMode(LineDataSet.Mode.CUBIC ...
- MPAndroidChart Wiki(译文)~Part 1
1. 基础入门 1.1 添加依赖 Gradle 工程添加依赖 (推荐使用) 项目级build.gradle中添加: allprojects { repositories { maven { url & ...
- 情人节闷在家里做画( 安卓统计图MPAndroidChart开发 )
有些时候觉得一个人挺好的,可以更自由安排自己的时间: 有些时候觉得有个人挺好的,很多事情一个人做起来太没意思了,纵使心中澎湃,倾听的独有自己. 废话少说,直接上图 MPAndroidChart是啥 一 ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
随机推荐
- C# SQLite 创建数据库的方法增删查改语法和命令
SQLite介绍 SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQL92标准. SQLite数据库官方主页 ...
- SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)
Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...
- gensim自然语言处理(续)
上一篇,已经实现了如何将一条语句在一个语料库中比较相似度, 发现运行的时候每次都要编译语料库,通过查找资料,可以一次性编译成预料库,存人文件 编译语料库代码 11_k.py import sysimp ...
- 用Markdown写博客快速入门
Markdown,简单来说,就是一种可以方便转换为HTML的带标记符号纯文本. 它是对我等键盘党的福音:我不用再费劲挪动鼠标去按加粗.设置段落了,用键盘输入所有文本,一气呵成. 最重要的是,cnblo ...
- struts2 常用标签
版权声明:本文为博主原创文章,未经博主允许不得转载. Struts2可以将所有标签分成3类: 准备工作:需要在JSP页面引入标签库 <%@ taglib prefix="s" ...
- 网络请求框架---Volley
去年的Google I/O大会为android开发者带来了一个网络请求框架,它的名字叫做Volley.Volley诞生的使命就是让Android的网络请求更快,更健壮,而且它的网络通信的实现是基于Ht ...
- jBoss设置jvm参数
jBoss版本: jboss-5.1.0.GA jboss-6.0.0.Final jboss-5.1.0.GA和jboss-6.0.0.Final修改方法: 打开%JBOSS_HOME%\bin ...
- css中属性值继承小解
继承:html元素可以从父元素那里继承一部分css属性,即使当前元素没有定义该属性. 1.css可以和不可以继承的属性 不可继承的:display.margin.border.padding.back ...
- LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 解决方法: 项目--> ...
- error: Semantic Issue: Interface type cannot be statically allocated
转自:http://hongmin118.iteye.com/blog/1333524 error: Semantic Issue: Interface type cannot be statical ...