MpAndroidChart源码修改之饼状图添加标志线
生活随笔
收集整理的這篇文章主要介紹了
MpAndroidChart源码修改之饼状图添加标志线
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
由于項目需要,需要改MpandroidChart源碼,下面,先看下效果圖:
效果很簡單,但是由于所選依賴庫沒提供相關方法,所以就需要重寫源碼了.
這條紅色的標志線其實就是那個影廳的均值嘛,這條線看著是不是和圖表中的連接線很像呢,那把連接線稍加改造不就可以了嗎?下面,先看下此依賴庫自帶的連接線的效果圖:
這里寫圖片描述
思考一下,我們只需要把值的顏色設置成透明就可以了,然后把連接線改造一下.
首先,先設置圖表的連接線的屬性.
pieData.setDrawValues(true);//餅狀圖上顯示值 dataSet.setValueLinePart1Length(0.3f);//設置連接線的長度 //x,y值在圓外顯示(在圓外才會有連接線) dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); //數(shù)據(jù)連接線距圖形片內部邊界的距離,為百分數(shù)(0~100f) dataSet.setValueLinePart1OffsetPercentage(0f); //設置x,y在圓外顯示的值為透明(transparent = 0x00000000) pieData.setValueTextColor(transparent);復制代碼好了,現(xiàn)在就該修改源碼了.
首先找到PieChart類,發(fā)現(xiàn)圖表的繪制的代碼都在PieChartRenderer類中.為了不影響其他圖表,我們把PieChart和PieChartExtraRenderer復制一份,在復制的代碼中做修改.
在PieChartExtraRenderer中找到drawValues( )這個方法,這個方法就是繪制顯示值和連接線的方法.
可以很快找到,這條折線
我們把第二折線注釋掉,就不會出現(xiàn)和連接線一樣的折線效果了.
然后可以在這個方法的前幾行找到得到的角度,
這里寫圖片描述
由于圖表是自動獲取角度的,那我們如果設置方法手動改變角度,不就可以了嗎.所以在上圖中,我把原有代碼注釋掉,改為我們獲取的角度,在這個類中添加方法:
這里寫圖片描述
然后我們在設置圖表的時候先設置這個指示線的角度
這里寫圖片描述
里邊的值為0~360f,由于我們用的是連接線,連接線都是從所占區(qū)域的中間畫的,所以我們需要乘以2.
運行時,會報錯,是因為數(shù)組越界了.
這里寫圖片描述
再循環(huán)中,每次循環(huán)xIndex都會加1,由于我們的餅狀圖有兩個數(shù)據(jù),所以會循環(huán)兩次,就會越界.所以上圖我們強制xIndex為0.
由于循環(huán)兩次,所以會畫2個線,我們要第一條線,所以再加個參數(shù)time,把time放循環(huán)末尾time++,而在畫線的方法外添加判斷
這里寫圖片描述
這樣效果就實現(xiàn)了.
提醒一點,觸摸事件會因為為空報錯,需要把觸摸事件禁用. pieChart.setRotationEnabled(false);//觸摸旋轉 pieChart.setTouchEnabled(false);復制代碼
下邊,給個修改好的餅狀圖的依賴庫,使用PieChartExtra這個餅狀圖,同時要設置標志線角度,調用PieChartExtraRenderer.setRotateLine(rotate)方法
轉載于:https://juejin.im/post/5a126e60f265da43333e0142
總結
以上是生活随笔為你收集整理的MpAndroidChart源码修改之饼状图添加标志线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Java毕业设计中学后勤设备保修维护
- 下一篇: 苹果MacOS系统上安装第三方驱动失败/