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);
             }

 

 

 

 

歐克出來了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM