基于RecyclerChart的KLine繪制詳解
本章節(jié)是KLine的繪制的第二章節(jié),在原來的基礎(chǔ)上繪制5、10、20日均線。下面是gif的效果。

其實(shí)只是把線性圖表的繪制邏輯搬到這邊一起,上篇文章提到在一個For循環(huán)里處理,減少遍歷,之前是通過Entry的Y值找對應(yīng)的PointF的Y值,這里需要用StockEntry中的5日、10日、20日均線值去求值。就是類似的一些邏輯替換,思想還是不變,然后左右邊界的處理暫時先放一放,滑動到邊界會有一些bug。
同時,這里的均值沒有參與到圖表YAxis的Max、min的計(jì)算中去,會有線出上下邊界的情況,待修復(fù)。
整體的繪制思想還是比較簡單的,代碼如下:

然后就是5/10/20均線點(diǎn)的繪制,這里值最好Server返回,或者計(jì)算好存入數(shù)據(jù)庫,然后圖表每次繪制時從數(shù)據(jù)庫里讀取數(shù)據(jù)。所以這三個值,跟繪制沒有關(guān)聯(lián)。
用一個滑動窗口的管理類,外加一個隊(duì)列,在原來的一次遍歷的基礎(chǔ)上處理完:
var queue:Queue<Float> = LinkedList()
var sum:Float = 0f
fun queueAddItem(value:Float){
queue.offer(value)
sum += value
}
fun queueRemoveItem(){
val value = queue.poll()
value?.let {
sum -= value
}
}
fun getAvg(type:Int, value: Float): Float{
queueAddItem(value)
val count = queue.size
if (count < type){
return value
}else if (count == type){
val avg = sum/count
queueRemoveItem()
return avg
}
return -1f
}
}
接下來會處理底部的成交量圖以及其它的一些底部圖表;之前的方式是通過兩個Chart表的聯(lián)動處理,看見網(wǎng)上有MPChartAndroid的類似的也是這樣處理的。繪制均線的過程中想到為什么不一起畫呢?同樣可以在上面的那個for循環(huán)里一起畫了,然后就不存在兩表的聯(lián)動問題了。只不過多了一個工作就是,需要處理兩個YAxis,同時,底部點(diǎn)YAxis也要實(shí)時地計(jì)算Max、Min, 然后聯(lián)動圖表。
再就是縮放,上一章節(jié)提到的,其實(shí)只需縮放后,按比例計(jì)算當(dāng)下的DisplayNumber,然后再invalidate(), 這里的話就是Adapter.notifyDatachange()應(yīng)該就Okay了,本章節(jié)暫時先到此。
到此這篇關(guān)于基于RecyclerChart的KLine繪制詳解的文章就介紹到這了,更多相關(guān)RecyclerChart KLine內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot掃描自定義的servlet和filter代碼詳解
本文是一篇根據(jù)作者工作經(jīng)歷總結(jié)出來的關(guān)于springboot掃描自定義的servlet和filter代碼詳解的文章,小編覺得非常不錯,這里給大家分享下,和朋友們一起學(xué)習(xí),進(jìn)步。2017-10-10
詳解Alibaba?Java診斷工具Arthas查看Dubbo動態(tài)代理類
這篇文章主要介紹了Alibaba?Java診斷工具Arthas查看Dubbo動態(tài)代理類?,它可以幫助我們查看JDK或者javassist生成的動態(tài)代理類,當(dāng)然,它的功能遠(yuǎn)不止此,還可以在生產(chǎn)環(huán)境進(jìn)行診斷,需要的朋友可以參考下2022-04-04
MybatisPlus特殊查詢的實(shí)現(xiàn)介紹
這篇文章主要介紹了MybatisPlus查詢投影、聚合查詢、分組查詢、等值查詢、范圍查詢、模糊查詢、排序查詢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10
基于SpringBoot接口+Redis解決用戶重復(fù)提交問題
當(dāng)網(wǎng)絡(luò)延遲的情況下用戶多次點(diǎn)擊submit按鈕導(dǎo)致表單重復(fù)提交,用戶提交表單后,點(diǎn)擊瀏覽器的【后退】按鈕回退到表單頁面后進(jìn)行再次提交也會出現(xiàn)用戶重復(fù)提交,辦法有很多,我這里只說一種,利用Redis的set方法搞定,需要的朋友可以參考下2023-10-10

