好久没有写博客了,最近比较忙,项目中使用了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);
}

欧克出来了

最新文章

  1. web.xml加载顺序
  2. vpn打通结果ping不通
  3. svn 回滚到某个版本
  4. 关于antlr包删除问题
  5. f2fs解析(七)node管理器中的 free_nid 结构体
  6. LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  7. gvim设置字体和隐藏菜单栏工具栏
  8. 串口传输文件 lrzsz
  9. Delphi应用程序的调试(十)调试器选项(在IDE中不要使用异常)
  10. iOS 苹果app提交 ITC.apps.validation.prerelease_build_missing
  11. [已解决]IndentationError: unindent does not match any outer indentation level
  12. vector动态数组
  13. JBOSS EAP 6 系列四 EJB实现——调用(贯穿始终的模块)
  14. 关于Python的那些话
  15. 玩转JPA(一)---异常:Repeated column in mapping for entity/should be mapped with insert="false" update="fal
  16. 10个JavaScript难点
  17. 面板 JPanel,滚动面板 JScrollPane,文本域JTextArea
  18. 使用.NET Core+Docker 开发微服务
  19. Scrum Meeting day 1
  20. java中Thread类分析

热门文章

  1. Android fragment 切换载入数据卡顿问题
  2. 下载论坛源码GBK UTF8 BIG5分别是什么意思
  3. iOS文件上传文件URL错误Invalid parameter not satisfying: fileURL'
  4. javascript Array(数组)
  5. centos7 install flash player
  6. Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境
  7. AL2018届校招笔试——自然语言处理
  8. 关于cnblogs的排版
  9. 自实现部分string类的功能
  10. 企业信息系统集成框架(设计思路)C模式