Android?MPChart自定義睡眠泳道圖教程示例
聲明
本文MPChart 代表的就是 MPAndroidChart。
本章節(jié)繼續(xù)上次的自定義繪制,不同之前的圖形, 日歷下邊的睡眠泳道圖,每個(gè)item不同于之前的圖形,會(huì)均等的width, 相反的是均等的高度的矩形,不等的寬度,就是所占X軸的比重不一樣,見(jiàn)1.1睡眠泳道圖。
1.0 睡眠泳道圖
首先跳出MPChart自定義這層概念,我們來(lái)繪制這個(gè)圖形,本身來(lái)說(shuō)還是蠻簡(jiǎn)單的,繪制四種不同的Rect,
根據(jù)不同的type 以及不同的X軸占比,兩個(gè)因素就可以將這個(gè)圖形確定下來(lái), 其實(shí)本身也就是如此,將這兩個(gè)變量因素存入到之前介紹的BarEntry中,這里定義為SleepItemEntry, 確定寬度的 變量,分成startTime, endTime, itemDuration = endTime - startTime。 將所有的睡眠數(shù)據(jù)轉(zhuǎn)化成 Entry之后,按照之前章節(jié)介紹的邏輯,存入DataSet中,通過(guò)Buffer feed() 方法之后,形成Buffer 數(shù)組, 接著通過(guò) Transformer 將buffer中的數(shù)據(jù)轉(zhuǎn)為屏幕像素點(diǎn),Render從buffer里同以往一樣無(wú)差別取數(shù)據(jù),每次取4個(gè)繪制Rect, 整個(gè)繪制完成。
SleepItemEntry
圖1.1 SleepItemEntry
SleepItemEntry中保存了 type, 將改時(shí)間段的時(shí)間消耗變量存在 SleepItemTime中。
圖1.2 SleepItemTime 屬性
SleepBuffer
SleepBuffer 負(fù)責(zé)將上面的SleepItemEntry數(shù)據(jù)存入到Buffer數(shù)據(jù)中去,邏輯在 override的feed() 方法里實(shí)現(xiàn),依次處理DataSet中的Entry,然后通過(guò) addBar(left, top, right, bottom); 存入到 Buffer中去。
圖1.3 SleepBuffer數(shù)據(jù)處理
addBar() 為父類(lèi) 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() 方法中,依舊可以看見(jiàn)Transformer 里的轉(zhuǎn)化Buffer數(shù)據(jù)的邏輯,里面還包含了邊界判斷,RTL判斷等其它的相關(guān)處理。
圖1.4 SleepRender繪制泳道圖
Okay, 至此泳道圖的繪制告一段落,整體相比而言比較簡(jiǎn)單,但是依舊走了一遍MPChart自定義的邏輯,不同常規(guī)的繪制邏輯,Item的寬度,高度跟以前的不太一樣。
后續(xù)我們介紹 LineChart,以及XAxis、YAxis的自定義邏輯,以及YAxis revert的情況下,配速圖表的繪制,更多關(guān)于Android MPChart睡眠泳道圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android自定義動(dòng)態(tài)壁紙開(kāi)發(fā)(時(shí)鐘)
今天小編就為大家分享一篇關(guān)于Android自定義動(dòng)態(tài)壁紙開(kāi)發(fā)(時(shí)鐘),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01Android程序開(kāi)發(fā)之使用PullToRefresh實(shí)現(xiàn)下拉刷新和上拉加載
這篇文章主要介紹了Android程序開(kāi)發(fā)之使用PullToRefresh實(shí)現(xiàn)下拉刷新和上拉加載的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07詳解OpenGL Shader彩虹條紋效果的實(shí)現(xiàn)
這篇文章主要為大家介紹了如何通過(guò)OpenGL Shader實(shí)現(xiàn)彩虹條紋效果,最后的效果和圖片處理軟件colorow中的彩虹效果濾鏡相似,需要的可以參考一下2022-02-02Android實(shí)現(xiàn)viewpager實(shí)現(xiàn)循環(huán)輪播效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)viewpager實(shí)現(xiàn)循環(huán)輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03如何使用Android實(shí)現(xiàn)接口實(shí)信息在留言板顯示
這篇文章主要介紹了如何使用Android接口實(shí)現(xiàn)信息的留言板顯示,需要的朋友可以參考下2015-07-07Android開(kāi)發(fā)TextView內(nèi)的文字實(shí)現(xiàn)自動(dòng)換行
這篇文章主要為大家介紹了Android開(kāi)發(fā)TextView內(nèi)的文字實(shí)現(xiàn)自動(dòng)換行,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Android實(shí)現(xiàn)左側(cè)滑動(dòng)菜單
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)左側(cè)滑動(dòng)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02