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

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

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

圖1.2 SleepItemTime 屬性
SleepBuffer
SleepBuffer 負(fù)責(zé)將上面的SleepItemEntry數(shù)據(jù)存入到Buffer數(shù)據(jù)中去,邏輯在 override的feed() 方法里實(shí)現(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
準(zhǔn)備好SleepBuffer的數(shù)據(jù)之后,只需自定義自己的Render,然后就可以拿Buffer中的數(shù)據(jù)進(jìn)行繪制了,將繪制邏輯放在override onDrawDataSet() 方法中,依舊可以看見Transformer 里的轉(zhuǎn)化Buffer數(shù)據(jù)的邏輯,里面還包含了邊界判斷,RTL判斷等其它的相關(guān)處理。

圖1.4 SleepRender繪制泳道圖
Okay, 至此泳道圖的繪制告一段落,整體相比而言比較簡單,但是依舊走了一遍MPChart自定義的邏輯,不同常規(guī)的繪制邏輯,Item的寬度,高度跟以前的不太一樣。
后續(xù)我們介紹 LineChart,以及XAxis、YAxis的自定義邏輯,以及YAxis revert的情況下,配速圖表的繪制,更多關(guān)于Android MPChart睡眠泳道圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android4.0.x Home鍵事件攔截監(jiān)聽的方法
這篇文章主要介紹了Android4.0.x Home鍵事件攔截監(jiān)聽的方法,對比分析了2.3.x的實(shí)現(xiàn)方法,分析了4.0.x實(shí)現(xiàn)Home鍵事件攔截監(jiān)聽的相關(guān)技巧,需要的朋友可以參考下2016-02-02
淺談Android Studio 4.1 更新內(nèi)容
這篇文章主要介紹了淺談Android Studio 4.1 更新內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android仿今日頭條頂部導(dǎo)航欄效果的實(shí)例代碼
這篇文章主要介紹了Android之仿今日頭條頂部導(dǎo)航欄效果的實(shí)例代碼,具有很好的參考價值,希望對大家有所幫助,一起跟隨小編過來看看吧2018-05-05
新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn)
這篇文章主要介紹了新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Android如何實(shí)現(xiàn)底部菜單固定到底部
這篇文章主要介紹了Android如何實(shí)現(xiàn)底部菜單固定到底部,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
Android 布局控件之LinearLayout詳細(xì)介紹
Android 布局控件之LinearLayout詳細(xì)介紹,需要的朋友可以參考一下2013-05-05
android GridView多選效果的實(shí)例代碼
在使用 GridView的時候,有時需要多選上面顯示的類容,比如批量刪除上面顯示的圖片,批量上傳圖片等。這個時候我們可以使用層疊圖來實(shí)現(xiàn),效果如下:2013-06-06
Android入門之TabHost與TabWidget實(shí)例解析
這篇文章主要介紹了Android入門之TabHost與TabWidget,對于Android初學(xué)者有一定的學(xué)習(xí)借鑒價值,需要的朋友可以參考下2014-08-08

