日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

MpAndroidChart源码修改之饼状图添加标志线

發(fā)布時間:2023/12/9 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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ù)連接線距圖形片內(nèi)部邊界的距離,為百分數(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)和連接線一樣的折線效果了.
然后可以在這個方法的前幾行找到得到的角度,
這里寫圖片描述
由于圖表是自動獲取角度的,那我們?nèi)绻O置方法手動改變角度,不就可以了嗎.所以在上圖中,我把原有代碼注釋掉,改為我們獲取的角度,在這個類中添加方法:
這里寫圖片描述
然后我們在設置圖表的時候先設置這個指示線的角度
這里寫圖片描述
里邊的值為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);//觸摸旋轉(zhuǎn) pieChart.setTouchEnabled(false);復制代碼

下邊,給個修改好的餅狀圖的依賴庫,使用PieChartExtra這個餅狀圖,同時要設置標志線角度,調(diào)用PieChartExtraRenderer.setRotateLine(rotate)方法

轉(zhuǎn)載于:https://juejin.im/post/5a126e60f265da43333e0142

總結

以上是生活随笔為你收集整理的MpAndroidChart源码修改之饼状图添加标志线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。