MPAndroidChart 自定義圖表繪制使用實(shí)例
引言
聲明:文中的MPChart代指MPAndroidChart.
本文主要講解LineChart中的三個(gè)變種Chart,第一個(gè)是漸變的LineGradientChart, 第二個(gè)是頻率散點(diǎn)圖,游泳階梯圖,其實(shí)MPChart本身也有階梯圖的,DataSet.isDrawSteppedEnabled()這個(gè)屬性來(lái)控制。
1. LineGradientChart
原理:每個(gè)Entry中的 Yvalue 值,計(jì)算值所在的顏色區(qū)間,顏色的值少于值范圍。然后繪制線段的時(shí)候,drawLine 時(shí)設(shè)置LineGradient就可以了, colorList跟 entryList 一樣存到DataSet中,dataSet.setColors(colorList) Api 接收colorList。
for (int j = mXBounds.min; j <= mXBounds.range + mXBounds.min; j++) {
Entry e = dataSet.getEntryForIndex(j);
...
//設(shè)置 lineGradient
mRenderPaint.setShader(new LinearGradient(startX, mLineBuffer[1], endX, mLineBuffer[3],
dataSet.getColor(j), dataSet.getColor(j+1), Shader.TileMode.MIRROR));
//用 lineGradient繪制線段。
canvas.drawLines(mLineBuffer, 0, pointsPerEntryPair * 2, mRenderPaint);
}

圖1.0 LineGradientChart
2. 散點(diǎn)圖
先看圖1.1 散點(diǎn)圖:

圖1.1 散點(diǎn)圖
這個(gè)其實(shí)有很多做法的,這里直接用LineChart,然后drawLine 時(shí) Paint 的color transparent,或者直接屬性控制不畫(huà)。
設(shè)置DataSet.drawCircle(true), 就會(huì)繪制 Point點(diǎn)了。三種不同的顏色的Point,DataSetList, 這里自定義了一個(gè)CustomDataSet,不同的值區(qū)間用不同的Type,對(duì)應(yīng)不同的顏色即可。

圖1.2 散點(diǎn)圖DataSet自定義
3. SteppedChart
階梯圖就是前后兩個(gè)點(diǎn)的連線是90度上去或者下來(lái)的,即X軸的值是一定的。這里存在一個(gè)問(wèn)題,MPChart中的X軸、Y軸的值是一一對(duì)應(yīng)的,就是Point(1.0, 4) , Point(1.0, 8) 最終存入 DataSet只能有一個(gè),后來(lái)的會(huì)將前面的覆蓋。想辦法如何繪制這種SteppedChart呢,就在最后一步,將Transformer轉(zhuǎn)化后的 Buffer里的數(shù)據(jù) currentEntry對(duì)應(yīng)的點(diǎn)的 X值改成 PreCurrentEntry的X值,當(dāng)他們滿足業(yè)務(wù)上的階梯的條件時(shí),或者將PreCurrentEntry的X值的值改成 currentEntry對(duì)應(yīng)的點(diǎn)的 X值。
直接看圖:

圖1.3 SteppedChart
本章節(jié)主要簡(jiǎn)單的介紹了幾個(gè)LineChart 的變種,稍微修改部分屬性就可以繪制不同需求的圖形。至此,MPChart自定義相關(guān)的圖形告一段落,原本計(jì)劃的還有些比如RTL相關(guān)的,還有曲線圖表的繪制等,有問(wèn)題需要了解的讀者可以留言或者加筆者的聯(lián)系方式探討。
后續(xù)介紹另外一種脫離MPChart圖表,基于RecycleView繪制的圖表,可實(shí)現(xiàn)的功能可以參照蘋(píng)果健康里的一些數(shù)據(jù)圖表,無(wú)限左右滑動(dòng),按下高亮選中滑動(dòng),以日、周、月為單位控制 單位區(qū)間里的數(shù)據(jù),可以屬性控制是否單位區(qū)間顯示,可以自動(dòng)彈回到鄰近的單位區(qū)間邊界等功能。
以上就是MPAndroidChart 自定義圖表繪制使用實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于MPAndroidChart 自定義圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實(shí)現(xiàn)IP地址輸入框的方法示例代碼
輸入框是我們?nèi)粘i_(kāi)發(fā)中經(jīng)常遇到的一個(gè)控件,如果更好的控制輸入框是對(duì)用戶體驗(yàn)很重要的一步,所以下面這篇文章主要給大家介紹了關(guān)于Android如何實(shí)現(xiàn)IP輸入框的相關(guān)資料,需要的朋友可以參考下。2017-10-10
Android顯示系統(tǒng)SurfaceFlinger分析
本文詳細(xì)講解了Android顯示系統(tǒng)SurfaceFlinger,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
Android實(shí)現(xiàn)對(duì)圖片放大、平移和旋轉(zhuǎn)的功能
現(xiàn)在很多App在查看一張圖片的原圖時(shí),都會(huì)支持圖片的手勢(shì)縮放,手勢(shì)平移以及圖片旋轉(zhuǎn)的操作。那么今天小編就來(lái)教大家去簡(jiǎn)單的實(shí)現(xiàn)圖片的放大、平移、旋轉(zhuǎn)的操作,有需要的可以參考借鑒。2016-08-08
android中TabHost的圖標(biāo)(48×48)和文字疊加解決方法
開(kāi)發(fā)過(guò)程中,有時(shí)候圖標(biāo)稍微大點(diǎn),比如48×48的時(shí)候,文字就會(huì)和圖標(biāo)疊加起來(lái),遇到這種問(wèn)題我們?cè)撛鯓犹幚砟??本文將詳?xì)介紹希望對(duì)你有所幫助2013-01-01
Android GestureDetector手勢(shì)滑動(dòng)使用實(shí)例講解
這篇文章主要為大家詳細(xì)介紹了Android GestureDetector手勢(shì)滑動(dòng)使用實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Android簽名文件轉(zhuǎn)化為pk8和pem的實(shí)現(xiàn)
這篇文章主要介紹了Android簽名文件轉(zhuǎn)化為pk8和pem的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
如何使用Flutter實(shí)現(xiàn)手寫(xiě)簽名效果
Flutter插件提供了用于繪制平滑簽名的簽名板,下面這篇文章主要給大家介紹了關(guān)于如何使用Flutter實(shí)現(xiàn)手寫(xiě)簽名效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12

