MpAndroidChart源碼修改之餅狀圖添加標志線

由于項目需要,需要改MpandroidChart源碼,下面,先看下效果圖:

效果圖

效果很簡單,但是由于所選依賴庫沒提供相關方法,所以就需要重寫源碼了.
這條紅色的標志線其實就是那個影廳的均值嘛,這條線看著是不是和圖表中的連接線很像呢,那把連接線稍加改造不就可以了嗎?下面,先看下此依賴庫自帶的連接線的效果圖:
這里寫圖片描述

思考一下,我們只需要把值的顏色設置成透明就可以了,然后把連接線改造一下.

首先,先設置圖表的連接線的屬性.

pieData.setDrawValues(true);//餅狀圖上顯示值  
dataSet.setValueLinePart1Length(0.3f);//設置連接線的長度  
//x,y值在圓外顯示(在圓外才會有連接線)  
dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);  
dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);   
//數據連接線距圖形片內部邊界的距離,為百分數(0~100f)     
dataSet.setValueLinePart1OffsetPercentage(0f);
//設置x,y在圓外顯示的值為透明(transparent = 0x00000000)
pieData.setValueTextColor(transparent);復制代碼

好了,現在就該修改源碼了.
首先找到PieChart類,發現圖表的繪制的代碼都在PieChartRenderer類中.為了不影響其他圖表,我們把PieChart和PieChartExtraRenderer復制一份,在復制的代碼中做修改.
在PieChartExtraRenderer中找到drawValues( )這個方法,這個方法就是繪制顯示值和連接線的方法.
可以很快找到,這條折線

這里寫圖片描述

我們把第二折線注釋掉,就不會出現和連接線一樣的折線效果了.
然后可以在這個方法的前幾行找到得到的角度,
這里寫圖片描述

由于圖表是自動獲取角度的,那我們如果設置方法手動改變角度,不就可以了嗎.所以在上圖中,我把原有代碼注釋掉,改為我們獲取的角度,在這個類中添加方法:
這里寫圖片描述

然后我們在設置圖表的時候先設置這個指示線的角度
這里寫圖片描述

里邊的值為0~360f,由于我們用的是連接線,連接線都是從所占區域的中間畫的,所以我們需要乘以2.
運行時,會報錯,是因為數組越界了.
這里寫圖片描述

再循環中,每次循環xIndex都會加1,由于我們的餅狀圖有兩個數據,所以會循環兩次,就會越界.所以上圖我們強制xIndex為0.
由于循環兩次,所以會畫2個線,我們要第一條線,所以再加個參數time,把time放循環末尾time++,而在畫線的方法外添加判斷
這里寫圖片描述

這樣效果就實現了.
提醒一點,觸摸事件會因為為空報錯,需要把觸摸事件禁用.

pieChart.setRotationEnabled(false);//觸摸旋轉   
pieChart.setTouchEnabled(false);復制代碼

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

轉載于:https://juejin.im/post/5a126e60f265da43333e0142

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279420.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279420.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279420.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據同步云端本地_如何從云端刪除Windows 8的同步數據

數據同步云端本地The ability to sync data and settings between computers running Windows 8 is great, but it does mean that your information – possibly personal – is stored in the cloud. If you have changed your mind about syncing and want to remove your d…

前端roadmap

轉載于:https://www.cnblogs.com/cleverle/p/9615061.html

mysql 8+ 忘記root密碼 解決方案

在安裝完數據庫后,由于自己不小心直接關閉了安裝窗口,或者長時間沒有使用root用戶登錄系統,導致忘記了root密碼,這時就需要重置MySQL的root密碼。當然,最簡單方式自然是刪除數據庫的data目錄,然后重新安裝數…

安全領域應該關注的網站

http://www.freebuf.com/ https://www.seceye.cn/ https://zhuanlan.zhihu.com/c_118578260 https://www.easyaq.com/samesource/360.shtml http://bobao.360.cn/index/index https://www.sec-wiki.com/event

國內是否可以安裝alexa_Alexa可以聽到您無法聽到的命令,哪些黑客可以利用

國內是否可以安裝alexaYour smart speaker can hear sounds that humans can’t, meaning attackers could hypothetically trigger a command without you noticing. It’s happening in labs right now. 您的智能揚聲器可以聽到人類聽不到的聲音,這意味著攻擊者可…

為什么要使用React Hooks?(5分鐘實例)

前言 React Hooks在React v16.8正式穩定版中加入。 Hooks是什么? React Hooks 就是讓你不必寫class組件就可以用state和其他的React特性;你也可以編寫自己的hooks在不同的組件之間復用;最近很多人都在談論 React Hooks。當使用React類組件那么久&#x…

ActiveMQ在windows下啟動失敗解決方案

activemq.xml文件中的<transportConnectors><!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><transportConnector name"openwire" uri"tcp://0.0.0.0:61616?maximumConnections1000&amp;wireForma…

jest忽略如何添加忽略_大多數人忽略的基本家庭維護任務

jest忽略如何添加忽略Owning a home requires a lot of responsibility, most notably regular maintenance to keep everything working great. However, there are a handful of very basic home maintenance tasks that you might be forgetting about. 擁有房屋需要承擔很多…

自定義常用input表單元素二:純css實現自定義radio單選按鈕

這是接著上一篇純css自定義復選框checkbox的第二篇&#xff0c;自定義一個radio單選按鈕&#xff0c;同樣&#xff0c;采用css偽類和“”css選擇器為思路&#xff0c;下面是預覽圖&#xff1a; 下面直入主題放代碼&#xff1a;HTML部分 <!--兩個name相同的radio--> <i…

Elasticsearch之kopf插件安裝之后的瀏覽詳解

比如&#xff0c;我的這里是http://192.168.80.200:9200/_plugin/kopf/ 1、cluster 2、nodes 3、rest 4、more 5、更多詳情&#xff0c;隨著深入&#xff0c;再貼寫分享&#xff01; 本文轉自大數據躺過的坑博客園博客&#xff0c;原文鏈接&#xff1a;http://www.cnblogs.com/…

郵件系統之webmail

courier-authlib 網址http://www.courier-mta.org/ flush privileges 命令本質上的作用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存里 虛擬用戶&#xff1a;Maildir &#xff1a;/var/mailbox/Suexec apache ,httpdusergroupht…

如何將Microsoft Word文檔轉換為PDF

PDFs are handy for distributing documents so that they’re seen the same way by all parties. Typically, you’ll create documents using another app, and then convert them to PDF. Here’s how to do it for a Microsoft Word document. PDF易于分發文檔&#xff0c…

ASP.NET WebApi 基于JWT實現Token簽名認證

一、前言 開發提供數據的WebApi服務&#xff0c;最重要的是數據的安全性。那么對于我們來說&#xff0c;如何確保數據的安全將會是需要思考的問題。在ASP.NET WebService服務中可以通過SoapHead驗證機制來實現&#xff0c;那么在ASP.NET WebApi中我們應該如何保證我們的接口安全…

Cage驗證碼生成器快速上手

Cage小巧&#xff0c;好用。這里在官方基礎例子基礎上做了擴展&#xff1a; 12345678910111213141516171819202122232425262728293031323334package com.lavasoft.ntv.web.common; import com.github.cage.IGenerator; import java.util.Random; /*** 驗證碼生成器 * * author …

馬云:未來無工可打,人工智能發展紅利還在10年以后

馬云雖然已經退出阿里巴巴&#xff0c;但作為一代商業傳奇他所說的話&#xff0c;還十分據有影響力。關于人工智能&#xff0c;馬云提出過不少預測性言論。未來10年&#xff0c;房子、車子都不在值錢。面對人工智能時代&#xff0c;未來傳統行業大部分會消失。更有厲害的&#…

如何更改您的iPhone鈴聲

The problem with having a popular phone like an iPhone is that, by default, everyone has the same ringtone. If you want to give your iPhone a more personal sound, here’s how to do it. 擁有像iPhone這樣的流行手機的問題是&#xff0c;默認情況下&#xff0c;每個…

【ACM-ICPC 2018 沈陽賽區網絡預賽 I】Lattice's basics in digital electronics

【鏈接】 我是鏈接,點我呀:) 【題意】 【題解】 每個單詞的前綴都不同。 不能更明示了... 裸的字典樹。 模擬一下。輸出一下就ojbk了。 【代碼】 #include <bits/stdc.h> #define LL long long #define rep1(i,a,b) for (int i a;i < b;i) #define rep2(i,a,b) for…

扒一扒那些年我們遇到的奇葩代碼

前言 本文首發于公眾號【一名打字員】 在工作中&#xff0c;我們通常會遇到傳說中的“祖傳”代碼&#xff0c;有些是否讓我們感到哭笑不得&#xff0c;今天本猿整理一下自己以及網絡上出現過的奇葩代碼。來源于互聯網的均會標明出處。 TOP1 當仁不讓的當然是傳說中的“睡排序”…

相對濕度與絕對濕度_如何監視家里的濕度水平

相對濕度與絕對濕度High humidity is no fun, and neither is low humidity—you want a good balance between the two. Here’s how to monitor the humidity in your house so that you can make the proper adjustments. 高濕度無濟于事&#xff0c;低濕度也無濟于事-您希望…

基于redis實現的扣減庫存

2019獨角獸企業重金招聘Python工程師標準>>> 在日常開發中有很多地方都有類似扣減庫存的操作&#xff0c;比如電商系統中的商品庫存&#xff0c;抽獎系統中的獎品庫存等。 解決方案 使用mysql數據庫&#xff0c;使用一個字段來存儲庫存&#xff0c;每次扣減庫存去更…