MPAndroidChart 自定義圖表繪制使用實例
引言
聲明:文中的MPChart代指MPAndroidChart.
本文主要講解LineChart中的三個變種Chart,第一個是漸變的LineGradientChart, 第二個是頻率散點圖,游泳階梯圖,其實MPChart本身也有階梯圖的,DataSet.isDrawSteppedEnabled()這個屬性來控制。
1. LineGradientChart
原理:每個Entry中的 Yvalue 值,計算值所在的顏色區(qū)間,顏色的值少于值范圍。然后繪制線段的時候,drawLine 時設置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); ... //設置 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. 散點圖
先看圖1.1 散點圖:
圖1.1 散點圖
這個其實有很多做法的,這里直接用LineChart,然后drawLine 時 Paint 的color transparent,或者直接屬性控制不畫。
設置DataSet.drawCircle(true), 就會繪制 Point點了。三種不同的顏色的Point,DataSetList, 這里自定義了一個CustomDataSet,不同的值區(qū)間用不同的Type,對應不同的顏色即可。
圖1.2 散點圖DataSet自定義
3. SteppedChart
階梯圖就是前后兩個點的連線是90度上去或者下來的,即X軸的值是一定的。這里存在一個問題,MPChart中的X軸、Y軸的值是一一對應的,就是Point(1.0, 4) , Point(1.0, 8) 最終存入 DataSet只能有一個,后來的會將前面的覆蓋。想辦法如何繪制這種SteppedChart呢,就在最后一步,將Transformer轉(zhuǎn)化后的 Buffer里的數(shù)據(jù) currentEntry對應的點的 X值改成 PreCurrentEntry的X值,當他們滿足業(yè)務上的階梯的條件時,或者將PreCurrentEntry的X值的值改成 currentEntry對應的點的 X值。
直接看圖:
圖1.3 SteppedChart
本章節(jié)主要簡單的介紹了幾個LineChart 的變種,稍微修改部分屬性就可以繪制不同需求的圖形。至此,MPChart自定義相關的圖形告一段落,原本計劃的還有些比如RTL相關的,還有曲線圖表的繪制等,有問題需要了解的讀者可以留言或者加筆者的聯(lián)系方式探討。
后續(xù)介紹另外一種脫離MPChart圖表,基于RecycleView繪制的圖表,可實現(xiàn)的功能可以參照蘋果健康里的一些數(shù)據(jù)圖表,無限左右滑動,按下高亮選中滑動,以日、周、月為單位控制 單位區(qū)間里的數(shù)據(jù),可以屬性控制是否單位區(qū)間顯示,可以自動彈回到鄰近的單位區(qū)間邊界等功能。
以上就是MPAndroidChart 自定義圖表繪制使用實例的詳細內(nèi)容,更多關于MPAndroidChart 自定義圖表的資料請關注腳本之家其它相關文章!
相關文章
Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法
這篇文章主要介紹了Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法,結(jié)合實例形式分析了Android視頻播放事件響應及相關屬性設置操作技巧,需要的朋友可以參考下2017-08-08Android ProgressBar 模擬進度條效果的實現(xiàn)
這篇文章主要介紹了Android ProgressBar 模擬進度條效果的實現(xiàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04Android中利用動態(tài)加載實現(xiàn)手機淘寶的節(jié)日特效
這篇文章主要介紹了Android中利用動態(tài)加載實現(xiàn)手機淘寶的節(jié)日特效,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-12-12Android靜默安裝實現(xiàn)方案 仿360手機助手秒裝和智能安裝功能
這篇文章主要介紹了Android靜默安裝實現(xiàn)方案,仿360手機助手秒裝和智能安裝功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11Android使用Kotlin和RxJava 2.×實現(xiàn)短信驗證碼倒計時效果
本篇文章主要介紹了Android使用Kotlin和RxJava 2.×實現(xiàn)短信驗證碼倒計時效果,非常具有實用價值,需要的朋友可以參考下2017-12-12Android webview與js交換JSON對象數(shù)據(jù)示例
js主動調(diào)用android的對象方式,android也無法返回給js一個jsonobject,需要js做一下轉(zhuǎn)換,具體代碼如下,感興趣的朋友可以參考下哈2013-06-06Android創(chuàng)建和使用數(shù)據(jù)庫SQLIte
這篇文章主要為大家詳細介紹了Android創(chuàng)建和使用數(shù)據(jù)庫SQLIte的相關資料,感興趣的小伙伴們可以參考一下2016-05-05