Android?MPChart自定義睡眠泳道圖教程示例
聲明
本文MPChart 代表的就是 MPAndroidChart。
本章節(jié)繼續(xù)上次的自定義繪制,不同之前的圖形, 日歷下邊的睡眠泳道圖,每個item不同于之前的圖形,會均等的width, 相反的是均等的高度的矩形,不等的寬度,就是所占X軸的比重不一樣,見1.1睡眠泳道圖。

1.0 睡眠泳道圖
首先跳出MPChart自定義這層概念,我們來繪制這個圖形,本身來說還是蠻簡單的,繪制四種不同的Rect,
根據(jù)不同的type 以及不同的X軸占比,兩個因素就可以將這個圖形確定下來, 其實本身也就是如此,將這兩個變量因素存入到之前介紹的BarEntry中,這里定義為SleepItemEntry, 確定寬度的 變量,分成startTime, endTime, itemDuration = endTime - startTime。 將所有的睡眠數(shù)據(jù)轉化成 Entry之后,按照之前章節(jié)介紹的邏輯,存入DataSet中,通過Buffer feed() 方法之后,形成Buffer 數(shù)組, 接著通過 Transformer 將buffer中的數(shù)據(jù)轉為屏幕像素點,Render從buffer里同以往一樣無差別取數(shù)據(jù),每次取4個繪制Rect, 整個繪制完成。
SleepItemEntry

圖1.1 SleepItemEntry
SleepItemEntry中保存了 type, 將改時間段的時間消耗變量存在 SleepItemTime中。

圖1.2 SleepItemTime 屬性
SleepBuffer
SleepBuffer 負責將上面的SleepItemEntry數(shù)據(jù)存入到Buffer數(shù)據(jù)中去,邏輯在 override的feed() 方法里實現(xiàn),依次處理DataSet中的Entry,然后通過 addBar(left, top, right, bottom); 存入到 Buffer中去。

圖1.3 SleepBuffer數(shù)據(jù)處理
addBar() 為父類 BarBuffer中的方法,將數(shù)據(jù)存入buffer中去。
protected void addBar(float left, float top, float right, float bottom) {
buffer[index++] = left;
buffer[index++] = top;
buffer[index++] = right;
buffer[index++] = bottom;
}
SleepRender
準備好SleepBuffer的數(shù)據(jù)之后,只需自定義自己的Render,然后就可以拿Buffer中的數(shù)據(jù)進行繪制了,將繪制邏輯放在override onDrawDataSet() 方法中,依舊可以看見Transformer 里的轉化Buffer數(shù)據(jù)的邏輯,里面還包含了邊界判斷,RTL判斷等其它的相關處理。

圖1.4 SleepRender繪制泳道圖
Okay, 至此泳道圖的繪制告一段落,整體相比而言比較簡單,但是依舊走了一遍MPChart自定義的邏輯,不同常規(guī)的繪制邏輯,Item的寬度,高度跟以前的不太一樣。
后續(xù)我們介紹 LineChart,以及XAxis、YAxis的自定義邏輯,以及YAxis revert的情況下,配速圖表的繪制,更多關于Android MPChart睡眠泳道圖的資料請關注腳本之家其它相關文章!
相關文章
Android程序開發(fā)之使用PullToRefresh實現(xiàn)下拉刷新和上拉加載
這篇文章主要介紹了Android程序開發(fā)之使用PullToRefresh實現(xiàn)下拉刷新和上拉加載的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07
詳解OpenGL Shader彩虹條紋效果的實現(xiàn)
這篇文章主要為大家介紹了如何通過OpenGL Shader實現(xiàn)彩虹條紋效果,最后的效果和圖片處理軟件colorow中的彩虹效果濾鏡相似,需要的可以參考一下2022-02-02
Android實現(xiàn)viewpager實現(xiàn)循環(huán)輪播效果
這篇文章主要為大家詳細介紹了Android實現(xiàn)viewpager實現(xiàn)循環(huán)輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
如何使用Android實現(xiàn)接口實信息在留言板顯示
這篇文章主要介紹了如何使用Android接口實現(xiàn)信息的留言板顯示,需要的朋友可以參考下2015-07-07
Android開發(fā)TextView內的文字實現(xiàn)自動換行
這篇文章主要為大家介紹了Android開發(fā)TextView內的文字實現(xiàn)自動換行,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06

