基于RecyclerChart的KLine繪制詳解
本章節(jié)是KLine的繪制的第二章節(jié),在原來的基礎(chǔ)上繪制5、10、20日均線。下面是gif的效果。
其實只是把線性圖表的繪制邏輯搬到這邊一起,上篇文章提到在一個For循環(huán)里處理,減少遍歷,之前是通過Entry的Y值找對應(yīng)的PointF的Y值,這里需要用StockEntry中的5日、10日、20日均線值去求值。就是類似的一些邏輯替換,思想還是不變,然后左右邊界的處理暫時先放一放,滑動到邊界會有一些bug。
同時,這里的均值沒有參與到圖表YAxis的Max、min的計算中去,會有線出上下邊界的情況,待修復(fù)。
整體的繪制思想還是比較簡單的,代碼如下:
然后就是5/10/20均線點的繪制,這里值最好Server返回,或者計算好存入數(shù)據(jù)庫,然后圖表每次繪制時從數(shù)據(jù)庫里讀取數(shù)據(jù)。所以這三個值,跟繪制沒有關(guān)聯(lián)。
用一個滑動窗口的管理類,外加一個隊列,在原來的一次遍歷的基礎(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,同時,底部點YAxis也要實時地計算Max、Min, 然后聯(lián)動圖表。
再就是縮放,上一章節(jié)提到的,其實只需縮放后,按比例計算當下的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代碼詳解的文章,小編覺得非常不錯,這里給大家分享下,和朋友們一起學習,進步。2017-10-10詳解Alibaba?Java診斷工具Arthas查看Dubbo動態(tài)代理類
這篇文章主要介紹了Alibaba?Java診斷工具Arthas查看Dubbo動態(tài)代理類?,它可以幫助我們查看JDK或者javassist生成的動態(tài)代理類,當然,它的功能遠不止此,還可以在生產(chǎn)環(huán)境進行診斷,需要的朋友可以參考下2022-04-04基于SpringBoot接口+Redis解決用戶重復(fù)提交問題
當網(wǎng)絡(luò)延遲的情況下用戶多次點擊submit按鈕導致表單重復(fù)提交,用戶提交表單后,點擊瀏覽器的【后退】按鈕回退到表單頁面后進行再次提交也會出現(xiàn)用戶重復(fù)提交,辦法有很多,我這里只說一種,利用Redis的set方法搞定,需要的朋友可以參考下2023-10-10